我正在使用SQL Server 2012 Management Studio。
我有一个临时表(我称之为temp_orders)我正准备稍后在一个进程中使用。它有超过一百个领域,但相关的领域如下:
primary_key order_number order_info
1 123 blah
2 234 blah1
3 234 blah1
4 234 blah2
看看order_number 234有两个相同的order_info条目?其中一个人必须去。但我还不能直接删除它;我需要识别重复的行,以便将它们追溯到生成此temp_orders表的源。
所以我在这个临时表中添加了一个dupe_number整数字段。目标是让dupe_number“计算”表中重复的order_number / order_info组合的数量,并将其设置为dupe_number:
primary_key order_number order_info dupe_number
1 123 blah 1
2 234 blah1 1
3 234 blah1 2
4 234 blah2 1
这看起来很简单,但我不能为我的生活弄清楚如何做到这一点。我的搜索结果是出现了一堆似乎非常迟钝或涉及游标的解决方案。这似乎应该非常简单,我只是不知道一个简单的解决方案。
感谢您的帮助。
答案 0 :(得分:1)
您需要使用ROW_NUMBER
或RANK
:
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY order_number, order_info
ORDER BY id)
FROM dbo.YourTable;