我有一个类似于以下内容的表
表tbl_veh
VIN Record DateChange
11223344 123A 6/24/2012
11223344 121G 7/20/2013
11223344 2D54 2/24/2013
55445588 44D4 2/27/2012
55445588 855D 3/15/2013
所以我想选择VIN并记录,但仅限于最近的日期。我该怎么办?
所以我会回来
11223344 and 121G
55445588 and 855D
答案 0 :(得分:5)
试试这个:
WITH [ranked] AS (
SELECT VIN, Record, RANK() OVER(PARTITION BY VIN ORDER BY DateChange DESC, newid()) [rank]
FROM tbl_veh)
SELECT VIN, Record
FROM [ranked]
WHERE [rank] = 1;
或“不太复杂”的版本(不使用CTE
):
SELECT VIN, Record
FROM (
SELECT VIN, Record, RANK() OVER(PARTITION BY VIN ORDER BY DateChange DESC, newid()) [rank]
FROM tbl_veh) as [ranked]
WHERE [rank] = 1;
答案 1 :(得分:1)
试试这个?这仅适用于每个vim有一个Datechange。如果您有多个,则需要进行更改
Select tbl_veh.vin, tbl_veh.record
From tbl_veh
Inner join (select vin, max(Datechange)
from tbl_veh
group by vin
) last
On last.vin = tbl_veh.vin