我有一个离散的事件,我试图加入连续日历。
举个例子,假设我的日期日历如下所示:
日期
1月2014
2月2014
3月2014
...
2014年12月31日
现在想象一下,您想要在日历中标记一个离散事件,比如销售。在此示例中,销售时间为3月3日至3月3日。
因此输出如下:
日期,Sales_flag
...
2014年3月2日,假
2014年3月3日,TRUE
2014年3月4日,正确
...
2014年3月7日,TRUE
2014年3月8日,错误
...甚至可以只返回销售中的行将是一个开始,即:
日期的
3-MAR-2014
4-MAR-2014
...
7-MAR-2014
到目前为止,我认为我需要在SQL中使用正确的外连接来实现此目的。但是,我不确定如何加入一系列价值观。以下是我到目前为止的情况:
(NB使用Access,因为我们可以使用哪些数据库的公司政策。)
SELECT Sales_Flag
FROM Sales
RIGHT JOIN Calendar
ON Sales.Date = Calendar.[Start Date]
WHERE Calendar.Date BETWEEN Sales.[Start Date] and Sales.[End Date];
然而,我迄今为止的所有尝试都导致我只有一行只有开始日期,我完全理解 - 最终我加入一个单独的值,因此得到一行。
因此,我是在朝着正确的方向前进,还是在完全错误的灌木丛中吠叫?
答案 0 :(得分:1)
正确的想法...但我不明白为什么你只在开始日期加入桌子。为什么不加入日期范围?
SELECT Sales_Flag
FROM Sales
RIGHT JOIN Calendar
ON Calendar.Date BETWEEN Sales.[Start Date] and Sales.[End Date];
我有点好奇为什么这里的“离散”事件......是闭门销售? :)
where sales.sales_flag is not null
where子句将消除日历中未匹配的所有行。