2013-09-27 65 views
0

我已經嘗試了很多方法來使這個工作,但我似乎無法讓它工作。在選擇聲明中遞增

我想要做什麼:

我有一個表中的兩列,列1包含不同的值,其中一些人有相同的值列2.我想和遞增數列3正在計算這些。

很難解釋,可能更容易給你看:

1. Column1 | Column2 | Column3 
2. a_______1__________1 
3. b_______1__________2 
4. c_______1__________3 
5. d_______1__________4 
6. e_______2__________1 
7. f_______2__________2 
8. g_______2__________3 
9. h_______3__________1 
10. i_______3__________2 
11. j_______4__________1 
12. k_______4__________2 
13. l_______4__________3 

我想: 對於第1列的每個值,在第3列計數,直到第2列去另一個值。

有人可以幫忙嗎? :) 謝謝!

回答

1

您可以使用row_number()分配的每一行與同column2值的增加:

select * 
,  row_number() over (partition by column2 order by column1) as Column3 
from YourTable 
0

表名:@Data

SELECT t1.col1, t1.col2, COUNT(t2.col2) AS sum 
FROM @Data t1 
INNER JOIN @Data t2 ON t1.col1 >= t2.col1 AND t1.col2 = t2.col2 
GROUP BY t1.col1, t1.col2 
ORDER BY t1.col1 

這是SQL服務器的語法,但邏輯應該是對於甲骨文也一樣

+0

感謝彼得B!那只是我正在尋找:) – user2823611