2013-03-24 119 views
0

我有我需要查詢產生一個結果集像這樣的表:SQL查詢計數器列

 
ColA ColB ColC 
==== ==== ==== 
AA  BC  1 
AA  BD  2 
BB  DD  1 
BB  EE  2 
BB  FF  3 
CC  AA  1 

(還有比這「虛構」的樣品更多的行)

只有可樂+ ColB存在於表上,ColC需要由查詢生成。每個不同的'ColA'需要將ColC中的計數重新設置爲1,但是直到ColA中的下一個值向上計數。

我正在使用MS/SQL2008。

謝謝你 - 我試圖尋找,看看其他人提出類似的問題,並已經看到了查詢,其中利用:

row_number() over (order by ColA, ColB)

,但據我瞭解,這將只是給我一個排序列表根據這個例子1..6?

回答

0

您需要對行編號進行分區 - 每個分區都有自己的一組1,2,3,...行號。

row_number() over (partition by ColA order by ColB) 
+0

謝謝 - 這是完美的WillA – Brian 2013-03-24 21:42:14

0
SELECT 
    ColA, 
    ColB, 
    row_number() over (partition by ColA order by ColB) as ColC 
FROM 
    Test 

DEMO

您可以添加ORDER BY ColA,強迫命令你想達成的目標(但演示展示了它沒有必要)。

+0

謝謝@MarcinJuraszek,有幫助的例子。我接受威爾作爲我接受的答案,因爲他首先到達了那裏 - 但是,再次感謝您抽出時間回答。 – Brian 2013-03-24 21:48:28