如何在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不支持它。
答案 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);