Anda harus memiliki catatan duplikat untuk beberapa/semua Nomor Keluhan, jadi gunakan DISTINCT
tidak akan berfungsi. Pertimbangkan tabel sederhana seperti
Column1 | Column2
-----------+------------
A | X
A | Y
Jika Anda hanya menginginkan satu record untuk Column1 =A, SQL tidak memiliki cara untuk mengetahui apakah akan menempatkan X atau Y di Column2. Ini adalah masalah yang sama yang Anda alami tetapi dengan 19 kolom, bukan 2. Anda perlu menerapkan semacam logika tentang bagaimana memutuskan baris mana yang akan ditampilkan untuk setiap Nomor Keluhan. Jadi untuk tabel di atas jika saya ingin X ditampilkan di Kolom2 saya akan menggunakan kueri berikut:
SELECT Column1,
Column2
FROM ( SELECT Column1,
Column2,
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY Column2 ASC) [RowNumber]
FROM MyTable
) t
WHERE RowNumber = 1
Di sini saya menggunakan ROW_NUMBER()
berfungsi untuk memprioritaskan setiap baris, lalu hanya menampilkan satu dengan prioritas tertinggi. Jika saya tidak peduli dengan urutan apa mereka keluar, saya mungkin menggunakan sesuatu seperti ini untuk memilih baris acak.
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY NEWID()) [RowNumber]
Karena saya tidak tahu logika apa yang harus diterapkan pada kueri Anda, saya tidak dapat memposting apa yang Anda butuhkan, tetapi saya dapat mencoba dan membantu Anda memulai:
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
Anda hanya perlu mengutak-atik ORDER BY
dalam ROW_NUMBER
fungsi yang sesuai dengan kebutuhan Anda.