请帮我弄清楚一种从数据集中获取每个组的第一个数字ID的方法如果尚未采用Id ...我甚至不知道解释它,所以我将向下解释这里:
Id | Col1 | Col2 | Value | Number ------+-------+------+----------+------- 17525 | A | B | 1086.00 | 1 17525 | A | B | 1086.00 | 2 17525 | A | B | 1086.00 | 3 17526 | A | B | 1378.00 | 1 17526 | A | B | 1378.00 | 2 17526 | A | B | 1378.00 | 3 17527 | A | B | 1498.00 | 1 17527 | A | B | 1498.00 | 2 17527 | A | B | 1498.00 | 3
我希望得到这样的东西: 对于每个Id OR值(无关紧要,相同),FIRST号码,在FIRST已从另一组中取出后。
这样的事情:
Id | Col1 | Col2 | Value | Number ------+-------+------+----------+------- 17525 | A | B | 1086.00 | 1 17526 | A | B | 1378.00 | 2 17527 | A | B | 1498.00 | 3
因此,对于第一个值,1086.00我将取第1个值,第二个值为1378.00我将采用数字2,因为1已经被取为第一个值。
我尝试了3个小时,但是ROW_NUMBER不起作用,递归CTE无法通过Max Recursion Limit 100错误。
请帮助!
感谢。
答案 0 :(得分:2)
您是否考虑过使用dense_rank()
?:
select distinct Id, Col1, Col2, Value
, dr = dense_rank() over (order by Id)
from t
返回:
+-------+------+------+---------+----+
| Id | Col1 | Col2 | Value | dr |
+-------+------+------+---------+----+
| 17525 | A | B | 1086,00 | 1 |
| 17526 | A | B | 1378,00 | 2 |
| 17527 | A | B | 1498,00 | 3 |
+-------+------+------+---------+----+