2013-10-31 44 views
0

使用TSQL可以實現以下結果嗎?數據 表中的 輸入包含三個字段:服務Id,的stationID,的SeqNo 每個服務可以具有多個站,它們是爲了通過的SeqNo 例如,服務1包含Sql查詢找出組合的一組unquie stop id

stationId SeqNo 
A 1 
B 2 
C 3 
D 4 

服務2

A 1 
C 2 
D 3 
E 4 
F 5 

服務3

A 1 
B 2 
C 3 

我想實現的是結果這樣

stationId SeqNo 
A 1 
B 2 
C 3 
D 4 
E 5 
F 6 
+0

你爲什麼選擇'C 3'如果服務'2'有'C 2'?解釋你用來獲得這些數據的邏輯 –

+0

這是因爲C在服務1後面。所以基本上,站點的順序是固定的,但是某些服務可能會跳過一個特定的站點,我需要的是一個Superset所有不正確的電臺以正確的順序(如果可能)。 – peanut

+0

我不認爲這足夠清楚。在服務一中我看不到'B'後面的'C'。 'B'後面看到'C'。有可能獲得所有獨特站點的超集,然而,「正確的順序」仍然是一個謎。說一個特定stationId的訂單是否取自stationId在所有服務中所擁有的最高價值是否公平? –

回答

0

您可以編寫一個查詢爲:

with CTE as 
(
select min(serviceid) as minserviceid , stationId,max(SeqNo) as maxSeqNo 
from T1 
group by stationId 
), 
CTE1 as 
(
select stationId, DENSE_RANK() over(order by stationId,maxSeqNo) as rnk 
from CTE 
) 
select stationId , rnk as SeqNo from CTE1