由1

2015-10-07 25 views
1

這裏遞增組連續的行是我的DATAS:由1

FirstKey SecondKey Sequence 
A1   B1   10001 
A1   B1   10002 
A1   B1   10003 
A1   B1   10004 
A1   B2   10001 
A1   B2   10003 
A1   B2   10005 
A1   B3   10001 
A1   B3   10002 
A1   B3   10003 
A2   B4   20001 
A2   B5   20002 
A2   B5   20003 
A2   B6   20004 

我嘗試輸出以下結果:

FirstKey SecondKey StartSequence EndSequence 
A1   B1   10001   10004 
A1   B2   10001   10001 
A1   B2   10003   10003 
A1   B2   10005   10005 
A1   B3   10001   10003 
A2   B4   20001   20001 
A2   B5   20002   20003 
A2   B6   20004   20004 

序列是一個整數,而不是一個varchar。我想要使​​用相同的鍵(FirstKey,SecondKey)在相同的行上出現序列。我的結果是由FirstKey,SecondKey,序列 下令有誰知道在SQL解決這個輸出

+1

您的Sybase版本是否支持'row_number()'? –

+0

你有序列產生(表1)或你想要產生它? – Meet

+0

不幸的是,似乎sybase 12.5不支持row_number –

回答

2

一個共同的解決方案是採用ROW_NUMBER與事實有你的序列間隙(我與Sybase 12.5運行) :

select FirstKey, 
    SecondKey, 
    min(Sequence), 
    max(Sequence) 
from 
(
    select FirstKey, 
     SecondKey, 
     Sequence, 
     -- meaningless value, but the same for sequential rows 
     Sequence - 
     row_number() over (partition by FirstKey, SecondKey order by Sequence) as grp 
    from tab 
) dt 
group by 
    FirstKey, 
    SecondKey, 
    grp 
+0

不幸的是,似乎sybase 12.5不支持row_number,我會嘗試搜索如何模仿它,否則我仍在尋找解決方案。 (我無法更改我的數據庫版本,我有點卡住在此) –

+0

謝謝我找到了解決方案,使用選擇ROWID = identity(int),*到#tab中的#tabrows替換缺少的row_number和您的解決方案運作如此 –