给定年份(如:2011),根据年份,查出2011年每个月的总数
显示结果为:
月份: 总数
2011-01 100
2011-02 50
2011-03 30
.........
2011-12 0
显示结果为:
月份: 总数
2011-01 100
2011-02 50
2011-03 30
.........
2011-12 0
解决方案 »
- weblogic启动报错Caused By: java.lang.OutOfMemoryError: PermGen space
- 关于触发器的一个错误
- 求解决一个数据库导入数据的问题
- 【急求】在使用oracle copy命令复制表中包含long数据类型的数据时报错
- 这样的语句为什么会有错?
- oracle ORA-09817
- 请高手指点?oracle 8i和oracle 9i是否能共存于一个windows系统里
- 对于一张表的大小,oracle有没有限制呢????
- 查看表中字段的命令是什么?
- 求大神写一个Oracle数据库备份策略!!!!
- oracle dblink问题
- 关于update语句问题,更新不一致的语句
(
id vachar(8),
riqi date
)
select t1.riqi,count(tb.riqi)from (select '2011-'||lpad(rownum,2,'0') riqi from dual connect by rownum<=12) t1 left join tb
on t1.riqi=substr(to_char(tb.riqi,'YYYY-MM-DD'),1,7) group by t1.riqi
(select '2011-'||lpad(rownum,2,'0') riqi from dual connect by rownum<=12)
变更红色部分就可以用于别的年度
(
MyDate DATE,
MyNum NUMBER(4)
);-- 无效数据
INSERT INTO T79 VALUES(to_date('2010-01-01', 'YYYY-MM-DD'), 1);
INSERT INTO T79 VALUES(to_date('2012-11-01', 'YYYY-MM-DD'), 11);
-- 有效数据
INSERT INTO T79 VALUES(to_date('2011-01-01', 'YYYY-MM-DD'), 1);
INSERT INTO T79 VALUES(to_date('2011-01-03', 'YYYY-MM-DD'), 3);
INSERT INTO T79 VALUES(to_date('2011-02-01', 'YYYY-MM-DD'), 2);
INSERT INTO T79 VALUES(to_date('2011-02-04', 'YYYY-MM-DD'), 4);
实测结果:
--假设表中日期格式都为YYYY-MM-DD
WITH T1 AS(
SELECT ADD_MONTHS(DATE'2010-12-01',LEVEL) AS t_date
FROM DUAL CONNECT BY LEVEL <= 12
),T2 AS(SELECT date'2011-01-06' 时间 , 100 总数 FROM DUAL UNION ALL
SELECT date'2011-01-11' 时间 , 200 总数 FROM DUAL UNION ALL
SELECT date'2011-02-12' 时间 , 100 总数 FROM DUAL UNION ALL
SELECT date'2011-03-19' 时间 , 400 总数 FROM DUAL UNION ALL
SELECT date'2011-06-01' 时间 , 100 总数 FROM DUAL UNION ALL
SELECT date'2011-08-09' 时间 , 540 总数 FROM DUAL UNION ALL
SELECT date'2011-08-26' 时间 , 160 总数 FROM DUAL UNION ALL
SELECT date'2011-10-12' 时间 , 109 总数 FROM DUAL
)SELECT TO_CHAR(T1.t_date,'YYYY-MM') 日期,NVL(SUM(T2.总数),0) 总数
FROM T1 LEFT JOIN T2 ON TO_CHAR(T1.t_date,'YYYY-MM') = TO_CHAR(T2.时间,'YYYY-MM')
GROUP BY TO_CHAR(T1.t_date,'YYYY-MM')
ORDER BY TO_CHAR(T1.t_date,'YYYY-MM')------------------------------------------------------------------------
时间 总数
1 2011-01 300
2 2011-02 100
3 2011-03 400
4 2011-04 0
5 2011-05 0
6 2011-06 100
7 2011-07 0
8 2011-08 700
9 2011-09 0
10 2011-10 109
11 2011-11 0
12 2011-12 0