如何挑选最后两天的表格

时间:2017-07-11 07:53:50

标签: sql sql-server tsql

您好我有样本表数据

ID  name      St_dt      points
1   Mohan   2017-07-10      20
1   Mohan   2017-07-10      25
1   Mohan   2017-07-07      30

当我试图挑选最近两天时

脚本

select * from table 
Where St_dt >= Cast(Dateadd(day, -1, Getdate()) AS DATE)

我如何精确地选择最后两天意味着上面的脚本不同的日期我没有得到确切的结果。 以下结果我需要

输出

ID  name      St_dt     points
1   Mohan   2017-07-10   20
1   Mohan   2017-07-07   30

2 个答案:

答案 0 :(得分:1)

使用ROW_NUMBER()每个日期可以获得一行,然后您只需从该结果集中选择最后两行

SELECT TOP 2 * FROM 
( 
   SELECT *, ROW_NUMBER() OVER (PARTITION BY St_dt ORDER BY ID) as RN 
   FROM table  
) x 
WHERE x.RN =1
ORDER BY St_dt DESC

答案 1 :(得分:0)

在子查询中使用distinct,然后选择前2个desc。用户外部申请获取其他字段

select top 2 a.*
from
    (select distinct St_dt
    from table) c
outer apply (select top 1 * from table where St_dt = c.St_dt) a
order by St_dt desc