我对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菜鸟。
答案 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