2016-06-14 16 views
0

Mein Problem ist, dass Duplikate existieren, weil Menschen Fehler mit unseren Versandaufträge machen und ein anderes Tracking # erstellt wird, um die Bestellung zu beheben. Also muss ich immer das letzte Duplikat für eine Bestellung bekommen, damit ich die richtige Nachverfolgung bekomme.Holen Sie sich das letzte Duplikat

Ich habe dies versucht:

SELECT OrderNum, TrackingNumber, CreatedDate, CreatedBy, Carrier 
FROM FPDWDB1.Ship.dbo.ShippingLog 
GROUP BY OrderNum 

Ich erhalte die folgende Fehlermeldung:

Column 'FPDWDB1.Ship.dbo.ShippingLog.TrackingNumber' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

+0

Wenn Sie Gruppe verwenden, indem alle anderen anderen Spalten als die Gruppe muss in einer Aggregatfunktion verwendet werden, dh max, avg etc. Es klingt Wie benötigt man eine row_number(), bestimmt das CreatedDate den letzten Datensatz? – artm

Antwort

0
Select OrderNum, TrackingNumber, CreatedDate, CreatedBy, Carrier 
FROM (
SELECT OrderNum, TrackingNumber, CreatedDate, CreatedBy, Carrier 
     ,ROW_NUMBER() OVER (PARTITION BY OrderNum ORDER BY CreatedDate DESC) rn 
FROM FPDWDB1.Ship.dbo.ShippingLog 
) A Where rn = 1 

ODER

WITH A AS (
SELECT OrderNum, TrackingNumber, CreatedDate, CreatedBy, Carrier 
     ,ROW_NUMBER() OVER (PARTITION BY OrderNum ORDER BY CreatedDate DESC) rn 
FROM FPDWDB1.Ship.dbo.ShippingLog 
) 
Select OrderNum, TrackingNumber, CreatedDate, CreatedBy, Carrier 
FROM A 
Where rn = 1 
Verwandte Themen