2016-06-14 9 views
0

私の問題は、人々が私たちの出荷注文で間違いを犯し、注文を修正するために別の追跡番号が作成されたため、複製が存在するということです。だから私はいつも注文のために最後の複製を取得する必要があるので、私は正しい追跡#を得る。最後の複製を取得

私はこの試みている:、あなたがして、グループを使用する場合は

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

以外の他のすべての列を:私は次のエラーを取得する

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

をグループは集計関数、すなわちmax、avgなどで使用する必要がありますrow_number()が必要な場合は、最新のレコードを決定するCreatedDateですか? – artm

答えて

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 

OR

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 
関連する問題