我有一张看起来像这样的表
ID Date
123 2/1/2017
123 4/1/2017
123 6/5/2017
123 7/8/2017
456 3/8/2017
456 3/9/2017
456 3/10/2017
日期采用美国格式。 我想提取一个ID列表,其中包含SECOND最大日期。所以我希望结果如下:
ID Date
123 6/5/2017
456 3/9/2017
我不知道该怎么做。我用Google搜索,但无济于事。非常感谢任何帮助。
我试过这个,但它无效
select *
from (
select ROW_NUMBER() over (partition by ID order by DATE desc ) as 'rowNum', ID, DATE
from table1 ) withRowNum
where rowNum = 2
答案 0 :(得分:1)
对于SQL Server:
如果您的日期为varchar
,并且您当前的日期格式不是mdy
,那么您可以使用set dateformat
,例如
set dateformat mdy;
select *
from (
select ROW_NUMBER() over (
partition by ID
order by convert(date,DATE) desc
) as 'rowNum', ID, DATE
from table1 ) withRowNum
where rowNum = 2