查询问题 - 抓取日期2年>当前的日期

时间:2015-12-08 21:14:09

标签: sql-server select

我在数据库中有两个表:'事件'和' 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中的最新条目。

2 个答案:

答案 0 :(得分:1)

使用GROUP BY HAVINGDATEADD

尝试以下操作

SQL Fiddle Demo

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())