我尝试了很多sqls来实现这个功能,但我似乎无法让它工作。
我想做什么:
我在表中有两列,第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列转到另一个值。
有人可以帮忙吗? :) 谢谢!
答案 0 :(得分:1)
您可以使用row_number()
为具有相同column2
的每一行指定增加值:
select *
, row_number() over (partition by column2 order by column1) as Column3
from YourTable
答案 1 :(得分: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-server语法,但oracle的逻辑应该是相同的。