我有张桌子看起来像这样:
BARCODE | PRICE | STARTDATE
007023819815 | 159000 | 2008-11-17 00:00:00.000
007023819815 | 319000 | 2009-02-01 00:00:00.000如何选择才能得到这样的结果:
BARCODE | PRICE | STARTDATE
007023819815 | 319000 | 2009-02-01 00:00:00.000使用max日期进行选择。
提前谢谢。
发布于 2010-05-17 08:25:32
SELECT TOP 1 barcode, price, startdate
FROM TableName
ORDER BY startdate DESC或者如果可以有多个行。
SELECT barcode, price, startdate
FROM TableName A
WHERE startdate = (SELECT max(startdate) FROM TableName B WHERE B.barcode = A.barcode)UPDATE更改了第二个查询,以查看每个条形码的最大值。
发布于 2010-05-17 08:21:53
一种优雅的方法是使用解析函数row_number
SELECT barcode, price, startdate
FROM (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY barcode ORDER BY startdate DESC) as rn
FROM YourTable
) subquery
WHERE rn = 1如果性能是一个问题,请查看这篇博客文章中的一些更复杂的选项。
https://stackoverflow.com/questions/2846976
复制相似问题