如何在SQL Server

时间:2018-05-29 10:17:57

标签: sql sql-server analytics

如何在SQL Server中使用窗口函数来使用日期范围?

我有这张桌子:

id   date        item
----------------------
123  07/01/2018  anf
123  31/12/2017  sh
123  01/01/2018  ab
123  12/03/2018  fhy
123  02/01/2018  fg
124  10/12/2017  ab
124  03/03/2017  sh
125  21/11/2017  ab
125  31/12/2017  sh
125  01/03/2017  ab
126  31/12/2017  ab

我想要ids从最新日期到之前30 days的所有信息。我的数据缺少日期,因此我不能逐行使用分区 我需要在窗口函数中使用类似日期范围的逻辑,但SQL Server不支持它。

2 个答案:

答案 0 :(得分:1)

SELECT * FROM YourTable 
WHERE DATEDIFF(DAY,date,GETDATE())<=30

答案 1 :(得分:1)

  

我想要从最近一天到过去30天的所有ids信息。

你的问题不清楚你真正想要的是什么。如果您指的是数据中的最新日期,则可以使用:

select . . . 
from (select t.*, max(date) over (partition by id) as max_date
      from t
     ) t
where date > dateadd(day, -30, max_date);