3

我对 SQL 不是很有经验。我需要手动编辑表 [ ] 中在 [ ] 和 [ ]TABLE_A中具有相等值的行。我已经知道如何过滤表的编辑视图,我只需要正确的查询。COLUMN_1COLUMN_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
4

1 回答 1

3

您可以使用Window 函数执行此操作-

;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
于 2012-09-18T14:10:31.667 回答