我想为另一个日期范围内的日期范围选择数据
我有下表
ID FNAME LNAME BEG_EPISODE_DT END_EPISODE_DT TRGT_DT
1 John G 12/20/16 02/11/17 03/31/17
2 King R 11/10/16 12/25/17 03/31/17
3 Bundt H 10/19/16 01/16/17 03/31/17
4 Smith F 02/16/16 04/08/17 03/31/17
以上数据显示每个人的剧集。剧集是指从一集(BEG_EPISODE_DT)开始到结束(END_EPISODE_DT)的持续时间
我需要选择数据,使每个人的剧集位于目标日期(TRGT_DT)之前的3个月内,即剧集(BEG_EPISODE_DT或END_EPISODE_DT)应位于03/31/17至3个月之前
我正在尝试使用以下逻辑。但我无法让它工作
select * from mytable
BEG_EPISODE_DT between ((ADD_MONTHS(TRGT_DT,-3), TRGT_DT) or
END_EPISODE_DT between ((ADD_MONTHS(TRGT_DT,-3), TRGT_DT) or
BEG_EPISODE_DT = (ADD_MONTHS(TRGT_DT,-3) or TRGT_DT) or
END_EPISODE_DT = (ADD_MONTHS(TRGT_DT,-3) or TRGT_DT)
我正在寻找以下结果
ID FNAME LNAME BEG_EPISODE_DT END_EPISODE_DT TRGT_DT
1 John G 12/20/16 02/11/17 03/31/17
3 Bundt H 10/19/16 01/16/17 03/31/17
4 Smith F 02/16/16 04/08/17 03/31/17
感谢您的帮助
编辑:BEG_EPISODE_DT或END_EPISODE_DT可以等于TRGT_DT或(TRGT_DT - 3个月)
答案 0 :(得分:0)
您缺少WHERE子句的关键字WHERE
。除此之外,BETWEEN
语法更简单。类似的东西:
where beg_episode_dt between add_months(trgt_dt, -3) and trgt_dt
or end_episode_dt between add_months(trgt_dt, -3) and trgt_dt