计算表中的重复项并将计数保存到同一表中的字段

时间:2015-10-21 20:14:12

标签: sql-server-2012

我正在使用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

这看起来很简单,但我不能为我的生活弄清楚如何做到这一点。我的搜索结果是出现了一堆似乎非常迟钝或涉及游标的解决方案。这似乎应该非常简单,我只是不知道一个简单的解决方案。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用ROW_NUMBERRANK

SELECT *,
       RN = ROW_NUMBER() OVER(PARTITION BY order_number, order_info 
                              ORDER BY id)
FROM dbo.YourTable;