SQL Server - 编辑具有重复键的行

时间:2012-09-18 14:02:16

标签: sql sql-server sql-server-2008

我对SQL不是很熟悉。我需要手动编辑[TABLE_A]和[COLUMN_1]中具有相等值的表[COLUMN_2]中的行。我已经知道如何过滤表格的编辑视图......我只需要正确的查询。

示例:

   COLUMN_1 COLUMN_2 COLUMN_3
    A       100       3
    C       354       2
    A       999       3
    A       100       1
    C       255       1
    B       600       5
    B       600       5
    B       600       7

我需要查询返回第1,4,6,7和8行。所以它应该返回一个这样的表......

   COLUMN_1 COLUMN_2 COLUMN_3
    A       100       3
    A       100       1
    B       600       5
    B       600       5
    B       600       7

我尝试使用谷歌搜索,这是我能得到的最接近的东西,所以这就是我现在所做的,但这不是我需要的......

SELECT COLUMN_1, COLUMN_2, COUNT(*) AS TotalCount
  FROM TABLE_A
 GROUP BY COLUMN_1, COLUMN_2
HAVING (COUNT(*) > 1)
 ORDER BY TotalCount DESC

该查询的问题在于它不会返回每个单独的行。它返回如下内容:

   COLUMN_1 COLUMN_2 TotalCount
    A       100        2
    B       600        3

PS:很抱歉,如果这很简单,但我有点像SQL菜鸟。

1 个答案:

答案 0 :(得分:3)

您可以使用Window functions -

执行此操作
;WITH CTE AS
(   SELECT  Column_1, 
            Column_2, 
            Column_3, 
            COUNT(*) OVER(PARTITION BY Column_1, Column_2) AS TotalDupes
    FROM    Table_A
)
SELECT  *
FROM    CTE
WHERE   TotalDupes > 1