读书人

求一SQL语句解决思路

发布时间: 2013-10-21 17:02:52 作者: rapoo

求一SQL语句
表A的结构为(
id
month --月份 如 1,5,11
num -- 数量

现在要查询结果为
月份 数量
1 xx
2 xx
3 xx
4 xx
.. ...
.. ...
11 XX
12 XX
现在当表A中没有12个月全部记录, 比如只有5月 8月的记录, 怎样查询才能得到12个月的记录(没有记录的数量用0填充)
[解决办法]

with
t as (select 3 mon,2 sum from dual union all
select 4 mon,3 sum from dual union all
select 5 mon,12 sum from dual union all
select 10 mon,22 sum from dual)
select t2.mon,nvl(sum,0)
from (select start_mon+level-1 mon
from (select LEAST(min(mon),1)start_mon,GREATEST(max(mon),12)end_mon from t) t1
connect by level<=end_mon-start_mon+1)t2,t
where t2.mon=t.mon(+)
order by mon;
--替换t表

读书人网 >oracle

热点推荐