我想做一个SQL查询,我只能看到我的最新货件。目前我得到以下结果。
item date licence plate number
1 13.5.2016 abc-123
2 13.5.2016 abc-123
3 10.5.2016 xyz-567
1 20.4.2016 abc-123
2 20.4.2016 abc-123
6 10.5.2016 xyz-567
但我想根据车牌号码获取最新货件。想要的输出看起来像
item date licence plate number
1 13.5.2016 abc-123
2 13.5.2016 abc-123
3 10.5.2016 xyz-567
答案 0 :(得分:3)
您可以使用以下查询:
SELECT t1.*
FROM mytable AS t1
JOIN (
SELECT item, MAX("date") AS "date"
FROM mytable
GROUP BY item
) AS t2 ON t1.item = t2.item AND t1."date" = t2."date"
查询使用派生表,该表选择每item
的最新日期。使用此派生表,我们可以选择与此日期对应的记录。
答案 1 :(得分:1)
以下是各种DBMS支持的标准SQL:
select item, date, licence_plate_number
from (
select item, date, licence_plate_number,
row_number() over (partition by licence_plate_number order by date desc as rn)
from the_table
) t
where rn = 1
order by item;
使用窗口函数通常比使用聚合的自联接更快。
答案 2 :(得分:0)
也许这会有所帮助:
SELECT TOP 10 --change 10 to any desired number to be viewed
*
FROM YourDatabaseName
ORDER BY Date DESC
答案 3 :(得分:0)
您必须先找到每个牌号的最大日期,然后加入表格。
您可以使用以下查询。
1 2016-05-13 abc-123
2 2016-05-13 abc-123
3 2016-05-10 xyz-567
6 2016-05-10 xyz-567
此查询的输出将是。
409 Conflict