我有一個變量長度爲'學期'的表,它們之間有一個可變的中斷,約束條件是'start_date'總是大於以前的' END_DATE':SQL-計算任意中斷的給定開始日期的結束日期
id start_date end_date
-----------------------------
1 2012-10-01 2012-12-20
2 2013-01-05 2013-03-28
3 2013-04-05 2013-06-29
4 2013-07-10 2013-09-20
和同學如下,其中可在任何給定時間學期內發生的開始日期的表:
id start_date n_weeks
-------------------------
1 2012-11-15 25
2 2013-02-12 8
3 2013-03-02 12
我試圖計算一個‘通過加入END_DATE’ '學生'在'學期'考慮到可變長度的中斷in-b在學期之間。
我可以在上學期的最後一天畫(即從以前行的END_DATE)和減法使用下面找到天學期在中間數:
SELECT start_date
, end_date
, lag(end_date) OVER() AS prev_end_date
, start_date - lag(end_date) OVER() AS days_break
FROM terms
ORDER BY start_date;
顯然,如果有來僅僅是兩個術語,它只是一個在幾天內添加'break'(可能會轉換爲'weeks')的問題,從而將'end_date'延長同一段時間。
但是對於一個給定的學生,如果'n_weeks'跨度超過一個學期,那麼這樣的查詢怎麼可能結構化呢?
被敲我的頭在牆上的最後幾天,我會非常感謝任何幫助任何人都能夠提供....
非常感謝。
下面是與數據和查詢測試出可能的解決方案所示的SQLFiddle:http://www.sqlfiddle.com/#!12/c487e/2 – IMSoP