我有一個包含時間段和數量的數據庫表。把它們看成一個合同期限和每天的價格:用於合併和計算時間段的SQL查詢
start | end | amount_per_day
2013-01-01 | 2013-01-31 | 100
2013-02-01 | 2013-06-30 | 200
2013-01-01 | 2013-06-30 | 100
2013-05-01 | 2013-05-15 | 50
2013-05-16 | 2013-05-31 | 50
我想提出一個查詢,將顯示總數每個時段,即:
從2013-01-01至第一份和第三份合同是活躍的,所以每天的總金額是200.從2013年2月1日到2013年4月30日,第二和第三行是激活的,所以總數是300。從2013年5月1日至2013年5月15日,第二,三,四行均處於活動狀態,總數爲350條。2013年1月16日至2013年5月31日,第二,三,所以總數再次是350.最後,從2013-06-01到2013-06-30只有第二和第三是活躍的,所以總數回到了300.
start | end | total_amount_per_day
2013-01-01 | 2013-01-31 | 200
2013-02-01 | 2013-04-30 | 300
2013-05-01 | 2013-05-31 | 350
2013-06-01 | 2013-06-30 | 300
(這是沒有必要檢測間隔2013-05-01 -> 2013-05-15
和2013-05-16 -> 2013-05-31
具有相同的總額和合並它們,但是這將是很好)。
我更喜歡可移植的解決方案,但如果不可能的話,SQL Server也可以工作。
我可以對錶格結構做一些小的改動,所以如果它能使查詢變得更簡單,例如,用時間段結束日期排除時間段(因此第一個時間段將是start = 2013-01-01,end = 2013-02-01)可以自由地提出這樣的建議。
如何計算'total_amount_per_day'? –
@JW .:這是否更好? –