をあなたはとてもDISTINCT
が動作しません使用して、いくつか/すべての苦情番号の重複レコードを持っている必要があります。あなたが列1 = Aのために一つだけの記録をしたい場合は、単純なテーブルなど
Column1 | Column2
-----------+------------
A | X
A | Y
を考えてみましょう、SQLは列2にXまたはYを配置するかどうかを知る方法がありません。これは、あなたが持っているのと同じ問題ですが、2ではなく19の列があります。各クレーム番号にどの行を表示するかを決定する方法について、ある種のロジックを実装する必要があります。私はXが列2に見せたかったのであれば、上記の表のために私は次のクエリを使用します。
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
あなただけいじる必要があるだろうあなたのニーズに合わせてROW_NUMBER
内のORDER BY
の機能を使用してください。
脇に、あなたの列とテーブル/ビューの名前を変更することを検討してください。オブジェクト名のスペースは嫌です。 – GarethD
ありがとうございます.. 100%働いています.. –
GarethD the Genius ... –