2016-10-10 47 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