增加select语句

时间:2013-09-27 13:33:05

标签: sql oracle

我尝试了很多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列转到另一个值。

有人可以帮忙吗? :) 谢谢!

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的逻辑应该是相同的。

相关问题