oracle 分组去空,oracle-按月、日、时分组查询数据,为空的数据补零

------月

select nvl(t1.tvalue, 0) "data1", t2.datevalue "name"

from (select sum(t.TSAI03) tvalue, TO_CHAR(t.TSAI01, 'yyyy-mm') timevalue

from TSA009 t

where TO_CHAR(t.TSAI01, 'YYYY-MM-DD') like '2012%'

and t.unit_code like '411500A0050000'

group by TO_CHAR(t.TSAI01, 'yyyy-mm')) t1,

(select '2012-' || lpad(level, 2, 0) datevalue

from dual

connect by level < 13) t2

where t1.timevalue(+) = t2.datevalue

order by t2.datevalue

-----日

select nvl(t1.tvalue, 0) "data1", t2.datevalue "name"

from (select sum(t.TSAI03) tvalue,

TO_CHAR(t.TSAI01, 'yyyy-mm-dd') timevalue

from TSA009 t

where TO_CHAR(t.TSAI01, 'YYYY-MM-DD') like '2012-04%'

and t.unit_code like '411500A0050000'

group by TO_CHAR(t.TSAI01, 'yyyy-mm-dd')) t1,

(select '2012-04-' || lpad(level, 2, 0) datevalue

from dual

connect by level < (select to_number(substr(last_day(to_date('2012-04-10',

'yyyy-mm-dd')),

0,

2))

from dual) + 1) t2

where t1.timevalue(+) = t2.datevalue

order by t2.datevalue

----时

select nvl(t1.tvalue, 0) "data1", t2.datevalue "name"

from (select sum(t.TSAJ03) tvalue,

TO_CHAR(t.TSAJ01, 'yyyy-mm-dd hh24') timevalue

from TSA010 t

where TO_CHAR(t.TSAJ01, 'YYYY-MM-DD') like '2012-04-10%'

and t.unit_code like '411500A0050000'

group by TO_CHAR(t.TSAJ01, 'yyyy-mm-dd hh24')) t1,

(select '2012-04-10 ' || lpad(level, 2, 0) datevalue

from dual

connect by level < 25) t2

where t1.timevalue(+) = t2.datevalue

order by t2.datevalue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值