日期:2014-05-17 浏览次数:20930 次
--你的例子
[SYS@myoracle] SQL>WITH t1 AS(
2 SELECT 1 ID, 1200 数量,DATE'2012-02-01' 开始日期,DATE'2012-02-10' 结束日期 FROM dual
3 UNION ALL
4 SELECT 2 ID, 900 数量,DATE'2012-02-06' 开始日期,DATE'2012-02-15' 结束日期 FROM dual
5 )SELECT 开始日期+Lev-1,SUM(数量)
6 FROM t1,(SELECT LEVEL Lev FROM dual CONNECT BY LEVEL <=31) t2
7 WHERE 开始日期+Lev-1 <= 结束日期
8 AND 开始日期+Lev-1 BETWEEN DATE'2012-02-01' AND DATE'2012-02-11'
9 GROUP BY 开始日期+Lev-1
10 ORDER BY 1;
开始日期+L SUM(数量)
---------- ----------
2012-02-01 1200
2012-02-02 1200
2012-02-03 1200
2012-02-04 1200
2012-02-05 1200
2012-02-06 2100
2012-02-07 2100
2012-02-08 2100
2012-02-09 2100
2012-02-10 2100
2012-02-11 900
已选择11行。
--我自己多谢了几条数据
[SYS@myoracle] SQL>WITH t1 AS(
2 SELECT 1 ID, 1200 数量,DATE'2012-02-01' 开始日期,DATE'2012-02-10' 结束日期 FROM dual
3 UNION ALL
4 SELECT 2 ID, 900 数量,DATE'2012-02-06' 开始日期,DATE'2012-02-15' 结束日期 FROM dual
5 UNION ALL
6 SELECT 3 ID, 300 数量,DATE'2012-02-03' 开始日期,DATE'2012-02-05' 结束日期 FROM dual
7 UNION ALL
8 SELECT 4 ID, 500 数量,DATE'2012-02-11' 开始日期,DATE'2012-02-25' 结束日期 FROM dual
9 )SELECT 开始日期+Lev-1,SUM(数量)
10 FROM t1,(SELECT LEVEL Lev FROM dual CONNECT BY LEVEL <=31) t2
11 WHERE 开始日期+Lev-1 <= 结束日期
12 AND 开始日期+Lev-1 BETWEEN DATE'2012-02-01' AND DATE'2012-02-15' --这个是你的条件
13 GROUP BY 开始日期+Lev-1
14 ORDER BY 1;
开始日期+L SUM(数量)
---------- ----------
2012-02-01 1200
2012-02-02 1200
2012-02-03 1500
2012-02-04 1500
2012-02-05 1500
2012-02-06 2100
2012-02-07 2100
2012-02-08 2100
2012-02-09 2100
2012-02-10 2100
2012-02-11 1400
2012-02-12 1400
2012-02-13 1400
2012-02-14 1400
2012-02-15 1400
已选择15行。
[SYS@myoracle] SQL>