我的表table1
有两列
start_date end_date
03/09/2016 03/15/2016
现在我需要这两个日期之间的所有星期开始和结束日期
week_start_date week_end_date
03/07/2016 03/11/2016
03/14/2016 03/18/2016
我有calendar
表,其中包含日期和星期开始日期以及从11月1日开始的结束日期。
我试图加入它,但它没有产生预期的结果。
SELECT DISTINCT r.START_DATE, r.END_DATE, c.week_start_date, c.week_end_date
FROM [table1] AS r
LEFT JOIN [Calendar] AS c
ON c.week_start_date BETWEEN r.WEEK_START_DATE AND r.WEEK_END_DATE
如何使用sql查询实现此目的。没有程序或t-sql请或变量。
答案 0 :(得分:1)
我认为问题是on
子句中的逻辑:
select distinct r.START_DATE, r.END_DATE, c.week_start_date,c .week_end_date
from table1 r join
calendar c
on c.week_start_date <= r.end_date and
c.week_end_date >= r.start_date;
注意:
select distinct
应该是不必要的(除非日历表是白天)。left join
是不必要的。