考慮三個表日期(日期ADATE,撲滅布爾),天(rangeId INT,天INT,數量int)和量程(rangeId INT,的startDate日)在甲骨文有效的連接與 「相關」 子查詢
我想要加入這些以便Range與來自aDate = startDate的日期連接,其中doUse = 1,每天在Days中。
給定一個範圍,可能做這樣的事情
SELECT rangeId, aDate, CASE WHEN doUse = 1 THEN qty ELSE 0 END AS qty
FROM (
SELECT aDate, doUse, SUM(doUse) OVER (ORDER BY aDate) day
FROM Dates
WHERE aDate >= :startDAte
) INNER JOIN (
SELECT rangeId, day,qty
FROM Days
WHERE rangeId = :rangeId
) USING (day)
ORDER BY day ASC
我想要做的就是查詢有效範圍內的所有範圍,不只是一個。
問題是,連接值「日」取決於要計算的範圍startDate,這給我在制定查詢時遇到了一些麻煩。
請記住日期表非常大,所以我想避免從表中的第一個日期計算日期值,而每個範圍日期不應超過100天左右。
編輯:樣本數據
Dates Days
aDate doUse rangeId day qty
2008-01-01 1 1 1 1
2008-01-02 1 1 2 10
2008-01-03 0 1 3 8
2008-01-04 1 2 1 2
2008-01-05 1 2 2 5
Ranges
rangeId startDate
1 2008-01-02
2 2008-01-03
Result
rangeId aDate qty
1 2008-01-02 1
1 2008-01-03 0
1 2008-01-04 10
1 2008-01-05 8
2 2008-01-03 0
2 2008-01-04 2
2 2008-01-05 5
請問您可以填寫一些示例數據,您希望得到什麼樣的結果? – Quassnoi 2009-01-25 22:20:29