我有一个似乎是一个简单的问题,但当然它永远不会。
我的数据看起来像这样(我正在显示竖线分隔):
Identifier | Roll Up | Sequence
1234 | 4567 | 1
1234 | 4567 | 2
1235 | 4567 | 1
1235 | 4567 | 2
1236 | 6789 | 1
1237 | 6789 | 1
因此,标识符是“卷起”字段的“版本”,每个“卷起”字段都有序列。
我需要做的是有一个额外的列来计算卷起的'版本',如下:
Version |Identifier | Roll Up | Sequence
1 |1234 | 4567 | 1
1 |1234 | 4567 | 2
2 |1235 | 4567 | 1
2 |1235 | 4567 | 2
1 |1236 | 6789 | 1
2 |1237 | 6789 | 1
我认为这将是一个简单的 计算每个标识符每个卷起 ,但我无法通过COUNT()
或{{正确地执行此操作1}}
有人会为该派生列提供解决方案吗?
非常感谢, 特纳。
答案 0 :(得分:2)
在您的简单查询中添加一列,如下所示:
row_number() over (partition by Identifier, Roll_Up order by Identifier, Roll_Up)
我认为这将是产生最终结果的脚本:
SELECT t0.*, count1
FROM Test AS t0 INNER JOIN
(SELECT Identifier1, ROLLUP1,
Row_Number() Over
(Partition BY Identifier1, Rollup1
ORDER BY Identifier1, RollUp1) AS count1
FROM Test
) AS t1
ON t0.Identifier1 = t1.Identifier1
AND t0.ROLLUP1 = t1.ROLLUP1