U moet dubbele records hebben voor sommige/alle klachtennummers, dus gebruik DISTINCT
zal niet werken. Overweeg een eenvoudige tabel zoals
Column1 | Column2
-----------+------------
A | X
A | Y
Als u slechts één record voor Kolom1 =A wilt, weet SQL niet of X of Y in Kolom2 moet worden geplaatst. Dit is hetzelfde probleem dat u ondervindt, maar met 19 kolommen, niet 2. U moet een soort logica implementeren om te beslissen welke rij voor elk klachtnummer wordt weergegeven. Dus voor de bovenstaande tabel als ik X in Kolom2 wilde laten zien, zou ik de volgende query gebruiken:
SELECT Column1,
Column2
FROM ( SELECT Column1,
Column2,
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY Column2 ASC) [RowNumber]
FROM MyTable
) t
WHERE RowNumber = 1
Hier gebruik ik de ROW_NUMBER()
functie om prioriteit te geven aan elke rij en dan alleen de rij met de hoogste prioriteit weer te geven. Als het me niet kon schelen in welke volgorde ze uitkwamen, zou ik zoiets als dit kunnen gebruiken om een willekeurige rij te kiezen.
ROW_NUMBER() OVER(PARTITION BY Column1 ORDER BY NEWID()) [RowNumber]
Aangezien ik niet weet welke logica ik moet toepassen op uw vraag, kan ik niet precies posten wat u nodig heeft, maar ik kan proberen u op weg te helpen:
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
Je hoeft alleen maar te rommelen met de ORDER BY
binnen de ROW_NUMBER
functie om aan uw behoeften te voldoen.