我在数据库中有两个表:'事件'和' Days'
事件表包含以下列:
ID | Parent_ID
---------------
303| 4
304| -1
305| 3
306| -1
Days表包含以下列:
Event_ID | Day
------------------------------------
303 | 2010-06-24 00:00:00.000
304 | 2013-08-21 00:00:00.000
305 | 2011-09-23 00:00:00.000
306 | 2011-12-04 00:00:00.000
303 | 2012-12-24 00:00:00.000
304 | 2010-11-06 00:00:00.000
305 | 2012-03-14 00:00:00.000
306 | 2011-06-12 00:00:00.000
305 | 2010-03-19 00:00:00.000
304 | 2009-01-20 00:00:00.000
我尝试做的是,在Events表中,找到Parent_ID为-1的每个ID,然后在Days表中的Event_ID下找到相同的ID,并返回输入的最后日期IF它距离当前日期还有两年多。
因此,例如,查询应该从Events表中获取304和306 ID,因为它们对于Parent_ID都有-1,并且应该返回:
2013-08-21 00:00:00.000
和
2011-12-04 00:00:00.000
因为它们是两个ID的最后一个条目,距离当前日期大于两年。
不确定如何做超过两年的部分。我试过的是:
select max(day) as day
from Events e join Days d on d.Event_ID = e.ID
where e.Parent_ID = -1
这将返回所有Event_ID中的最新条目。
答案 0 :(得分:1)
使用GROUP BY HAVING
和DATEADD
SELECT
Event_ID,
MAX(Day)
FROM Days
WHERE Event_ID IN (SELECT ID FROM Events WHERE Parent_ID = -1)
GROUP BY Event_ID
HAVING MAX(Day) < DATEADD(dd, -730, getdate())
答案 1 :(得分:1)
我猜您正在寻找比当前日期早2年的日期(如果没有让我知道,那么我会更新答案)
where e.Parent_ID = -1 and d.Day < dateadd(day,-730,getdate())