求教oracle sql用select as按月份搜索并列出总量。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教oracle sql用select as按月份搜索并列出总量。相关的知识,希望对你有一定的参考价值。
表A有column 时间和数量,需要select 时间 as 横坐标,sum(quantity) as纵坐标,但不存在月份需要在输出结果显示该月为0 例如表里三条数据: day quantity 2012-1 1000 2012-1 1000 2012-2 2000 2012-5 3000 要输出这样的结果: 横坐标 纵坐标 1月 2000 2月 2000 3月 0 4月 0 5月 3000 ... 12月 0
参考技术A 首先同意一楼的建议,创建临时表b(daydate),
数据为:(只要月份1-12即可)
day
2012-1-1
2012-2-1
2012-3-1
2012-4-1
2012-5-16
2012-6-1
2012-7-1
2012-8-1
2012-9-1
2012-10-1
2012-11-1
2012-12-1
然后查询:
select
to_char(day,'mm')||'月'
月份,sum(quantity)
总计
from
(select
day,quantity
from
A
union
select
day,0
quantity
from
b)
group
by
to_char(day,'mm');
输出样式如下:
月份
总计
------
------------------
01月
1000
02月
0
03月
1200
04月
0
05月
3000
06月
1500
07月
0
08月
0
09月
0
10月
0
11月
0
12月
0
oracle sql 查询:按照月份对数据进行合并处理,具体看下图,sql 能否实现?
WITH TEST_TBL AS(SELECT 'A' ITEM_CODE, TO_DATE('2014/1/1', 'yyyy/mm/dd') D_DATE,10 QUANTITY
FROM DUAL
UNION ALL
SELECT 'A' ITEM_CODE, TO_DATE('2014/2/1', 'yyyy/mm/dd') D_DATE,20 QUANTITY
FROM DUAL
UNION ALL
SELECT 'A' ITEM_CODE, TO_DATE('2014/3/1', 'yyyy/mm/dd') D_DATE,30 QUANTITY
FROM DUAL
UNION ALL
SELECT 'A' ITEM_CODE, TO_DATE('2014/4/1', 'yyyy/mm/dd') D_DATE,40 QUANTITY
FROM DUAL
UNION ALL
SELECT 'A' ITEM_CODE, TO_DATE('2014/1/1', 'yyyy/mm/dd') D_DATE,10 QUANTITY
FROM DUAL
UNION ALL
SELECT 'B' ITEM_CODE, TO_DATE('2014/2/1', 'yyyy/mm/dd') D_DATE,10 QUANTITY
FROM DUAL
UNION ALL
SELECT 'B' ITEM_CODE, TO_DATE('2014/3/1', 'yyyy/mm/dd') D_DATE,10 QUANTITY
FROM DUAL
UNION ALL
SELECT 'B' ITEM_CODE, TO_DATE('2014/4/1', 'yyyy/mm/dd') D_DATE,10 QUANTITY
FROM DUAL
)
SELECT ITEM_CODE,
SUM( DECODE (TO_CHAR(D_DATE,'YYYY/MM') ,'2014/01', QUANTITY,0)) AS T1 ,
SUM( DECODE (TO_CHAR(D_DATE,'YYYY/MM') ,'2014/02', QUANTITY,0)) AS T2 ,
SUM( DECODE (TO_CHAR(D_DATE,'YYYY/MM') ,'2014/03', QUANTITY,0)) AS T3 ,
SUM( DECODE (TO_CHAR(D_DATE,'YYYY/MM') ,'2014/04', QUANTITY,0)) AS T4
FROM TEST_TBL
GROUP BY ITEM_CODE
ORDER BY ITEM_CODE 参考技术A select 物料编码,sum(case to_char(日期,'mm') = '1' then 数量 else 0 end) 一月份数量,
sum(case to_char(日期,'mm') = '2' then 数量 else 0 end) 二月份数量,
sum(case to_char(日期,'mm') = '3' then 数量 else 0 end) 三月份数量,
sum(case to_char(日期,'mm') = '4' then 数量 else 0 end) 四月份数量,
....
from tabname
group by 物料编码本回答被提问者采纳
以上是关于求教oracle sql用select as按月份搜索并列出总量。的主要内容,如果未能解决你的问题,请参考以下文章
oracle sql 查询:按照月份对数据进行合并处理,具体看下图,sql 能否实现?
ORACLE将连续或不连续月份合并sql怎么写,要求不通过存储过程实现