一部またはすべての苦情番号のレコードが重複している必要があるため、DISTINCT
を使用します 動作しないでしょう。
Column1 | Column2
-----------+------------
A | X
A | Y
Column1 =Aのレコードが1つだけ必要な場合、SQLにはXとYのどちらをColumn2に配置するかを知る方法がありません。これはあなたが抱えているのと同じ問題ですが、2つではなく19の列があります。各苦情番号にどの行を表示するかを決定する方法について、何らかのロジックを実装する必要があります。したがって、上記の表でXをColumn2に表示する場合は、次のクエリを使用します。
SELECT Column1,
Column2
FROM ( SELECT Column1,
Column2,
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY Column2 ASC) [RowNumber]
FROM MyTable
) t
WHERE RowNumber = 1
ここでは、ROW_NUMBER()
を使用しています 各行に優先順位を付けてから、優先順位が最も高い行のみを表示する関数。それらがどのような順序で出てきたかを気にしない場合は、このようなものを使用してランダムな行を選択する可能性があります。
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY NEWID()) [RowNumber]
クエリに適用するロジックがわからないため、必要なものを正確に投稿することはできませんが、開始することはできます。
SELECT [Complaint Number],
[Complaint_For],
[Total_Complaint_Qty],
[Defects],
[Customer Code ],
[Location],
[CutomerName],
[KUNUM],
[QMNUM],
[Responsible_KAM]
FROM ( SELECT [Complaint Number],
[Complaint_For],
[Total_Complaint_Qty],
[Defects],
[Customer Code ],
[Location],
[CutomerName],
[KUNUM],
[QMNUM],
[Responsible_KAM],
ROW_NUMBER() OVER(PARTITION BY [Complaint Number] ORDER BY Complaint_For, Defects) AS RowNumber
FROM [CCCMPREPOSITORY].[dbo].[VW_Final_]
) data
WHERE RowNumber = 1
ORDER BY
をいじるだけです。 ROW_NUMBER
内 ニーズに合わせて機能します。