Sql选择最新的日期

时间:2015-01-26 17:16:49

标签: sql sql-server group-by

我正在尝试使用以下代码制作视图...

SELECT DISTINCT 
                     TOP (100) PERCENT .dbo.InventoryItems.ItemNo, .dbo.InventoryItems.ItemID, .dbo.InventoryItems.DescriptionMed, 
                     .dbo.PODetails.MostRecentCost, .dbo.UOMs.UOMCode, .dbo.PODetails.BuyUOMID, .dbo.UOMConvert.Factor, 
                     .dbo.PODetails.MostRecentCost * .dbo.UOMConvert.Factor AS [Price Test], .dbo.PO.EntryDate, 
                     .dbo.UOMConvert.UOMID

FROM            .dbo.PO INNER JOIN
                     .dbo.PODetails ON .dbo.PO.POID = .dbo.PODetails.POID INNER JOIN
                     .dbo.UOMConvert INNER JOIN
                     .dbo.UOMs ON .dbo.UOMConvert.ToUOMID = .dbo.UOMs.UOMID INNER JOIN
                     .dbo.InventoryItems ON .dbo.UOMConvert.ItemID = .dbo.InventoryItems.ItemID ON 
                     .dbo.PODetails.ItemNo = .dbo.InventoryItems.ItemNo
ORDER BY .dbo.PO.EntryDate DESC

它给了我按Entrydate排序的所有记录,但我只想保留每个ItemNo的最新记录。我尝试添加group by语句,行号和MAX()语句,但我必须输入所有错误,因为我对SQL的知识有限,因此它们都给我错误。 :(非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用window function

select * from (
select row_number()over(partition by itemno order by Entrydate desc) Rn,
       .... 
from table1 join ...)
A where rn=1