2016-10-10 8 views
0

重複したIDを持つテーブルがありますが、2番目の列には他の値があります。 DISTINCTを使用してすべての重複を削除する代わりに、IDと1列目と2列目の値を含む複数の列が必要です。ここで複数の列にSQL重複値があります

は、私が何を意味するかである:(結果になることがあります)

Original

Result

+2

どの 'DBMS 'あなたも同様のタグを使用しています –

+0

指定してください、結果のテーブル定数の列数です(つまり、あなたの可能なすべての値を知っていますrceテーブルの2番目の列)または動的な成長(2番目の列のすべての可能な値がわからない)。 – lospejos

+0

2番目の列は動的である必要があります。 – 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

関連する問題