2012-09-18 27 views
3

我對SQL不太熟悉。我需要手動編輯[]中[COLUMN_1]和[COLUMN_2]中具有相同值的表中的行。我已經知道如何篩選表格的編輯視圖...我只需要正確的查詢。SQL Server - 編輯具有重複鍵的行

例子:

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 noob。

+0

編輯:刪除我的表的acutal名稱與通用的東西一樣COLUMN_1等取而代之 – user1451495

回答

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 
+2

只是打我吧,這裏是一個[SQL小提琴](http://sqlfiddle.com/#!3/ed1a8/13) – Taryn