0

我已经尝试了很多 sql 来让它工作,但我似乎无法让它工作。

我想做的事:

我在一个表中有两列,第 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 列变为另一个值。

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

4

2 回答 2

1

您可以使用row_number()相同的方法为每一行分配一个递增的值column2

select  *
,       row_number() over (partition by column2 order by column1) as Column3
from    YourTable
于 2013-09-27T13:37:00.840 回答
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 相同。

于 2013-09-27T14:55:55.853 回答