我試圖在連續日曆中加入一個離散事件。使用SQL將離散事件連接到連續時間序列
舉個例子,假設我有日期的日曆,如下所示:
日期
1月2014
2月2014
3月2014 ...
31日 - 12月2014
現在,假設你有一個離散事件的時候,說一個銷售,你想標記在您的日曆。在這個例子中,銷售是從3月3日到7月3日。
輸出將因此看起來像:
日期,Sales_flag
...
2-MAR-2014,FALSE
3-MAR-2014,TRUE
4-MAR-2014 ,TRUE
...
7月 - 2014年,TRUE
8月 - 2014年,FALSE
。 ..甚至可以只返回在售的行會是一個開始,即:
日期
3月2014
4月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];
然而,我所有的努力迄今已造成我具有一行只有開始日期,我完全理解 - 最終我加入了一個單一的值,因此得到一個單一的行。
因此,我是否正朝着正確的方向前進,還是完全錯誤地灌木叢灌木?
啊哈 - 從來不知道你可以加入*範圍......這肯定會讓蝦有所動搖。這是否被稱爲特定的加入技術? - 我以前只加入過單個值。 此外,訪問給我一個惱人的毫無意義的錯誤消息「之間運算符沒有和在查詢表達式」Calendar.Date BETWEEN銷售。[開始日期'「。對我有什麼錯誤有任何想法? –
不幸的是,Access sql是它自己的語言,並沒有對我最有意義。嘗試在語法之間使用搜索引擎訪問,你應該得到一個命中。最壞的情況...不要在兩者之間使用,做一個日期>開始和日期<結束。 – Twelfth
對不起,您錯過了其中一個問題......不知道是否有任何具體的名字。早在過去,連接子句就不存在了,所有東西都會被放入where子句(包括連接)中......任何可以包含在where語句中的任何東西都可以包含在join子句中。範圍,個案陳述,自定義功能......你可以真正加入任何你想要的任何東西(或任何組合)。 – Twelfth