2016-10-10 48 views
0

我有一個包含重複ID的表,但其他值在第二列中。 而不是使用DISTINCT刪除所有重複項,我需要1行ID和幾列與第二列的值。多個列中的SQL重複值

這裏是我的意思是:(有可能成爲結果)

Original

Result

+2

哪'DBMS '你正在使用標籤以及 –

+0

請指定,在結果表中的列數是常數(即你知道你的所有可能的值rce表第二列)或動態增長(您不知道第二列的所有可能值)。 – lospejos

+0

第二列應該是動態的。 – Flexxzor

回答

0

好吧,我已經成功地與此修復:

WITH cte AS (SELECT top 1000 *, ROW_NUMBER()OVER(PARTITION BY 
id ORDER BY id) as RN FROM dbo.books) SELECT top 
1000 a.id, a.category 
, b.category as category2 
, c.category as category3 
, d.category as category4 
from cte a 
LEFT join cte b 
on a.id = b.id 
and a.RN = b.RN -1 
LEFT JOIN cte c 
ON a.id = c.id 
AND a.RN = c.RN -2 
LEFT JOIN cte d 
ON a.id = d.id 
AND a.RN = d.RN -3 
WHERE a.RN = 1 
+0

我仍然面臨的問題是,我不得不將這個查詢與另一個合併。 我有另一個查詢有一個簡單的SELECT FROM WHERE語句,但有一個內部聯接到這個(dbo.books)。 我無法設法從這些查詢中做出1個查詢。 – Flexxzor