gpt4 book ai didi

sql-server - 如何标记在过去 X 天内出现过的 ID?数据库服务器

转载 作者:行者123 更新时间:2023-12-02 09:12:34 24 4
gpt4 key购买 nike

如果我有这样的表:

 ID  |  Date  
1 | 2018-01-01
1 | 2018-01-10
1 | 2018-02-02

如何通过 CASE'ing 获取“过去 10 天”的标记以获取以下内容:

 ID  |  Date        | Marker  
1 | 2018-01-01 | 0
1 | 2018-01-10 | 1
1 | 2018-02-02 | 0

我需要一个解决方案来检查行 ID、查看其日期、查看该 ID 的所有先前日期并标记当前 ID 是否已经在“过去 x 天”的范围内。

我在 DAX 中使用 EARLIER() 确定了这一点,但是无论我在 SQL Server 中尝试什么(无论是 LAG、WHERE、OVER() 等)似乎都不起作用。我希望我可以告诉 SQL:“WHERE 更早的日期 + x >= 日期”。

请帮助我理解 SQL 的怪癖。

附言寻找没有附加连接的解决方案 - 我的表已经足够大了。

2018 年 5 月 24 日编辑:

我不想只比较 GetDate() 的最后 X 天,因为我所说的最后 X 天是针对行中的特定 ID,以检查日期在过去 x 天内的实例具有相同的 ID。

最佳答案

使用 LAG查看每个 ID 的日期是否与前一个日期正好相差 10 天。如果你想要它的“范围”,请更改为 <=

select
id
,date
,Marker = case when dateadd(day,-10,[Date]) = lag([Date]) over (partition by id order by [Date]) then 1 else 0 end
from YourTable
order by id, [Date]

关于sql-server - 如何标记在过去 X 天内出现过的 ID?数据库服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50496932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com