1. 程式人生 > >oracle-按月、日、時分組查詢統計資料,無資料補零

oracle-按月、日、時分組查詢統計資料,無資料補零

------月

1234567891011select nvl(t1.tvalue, 0) "data1", t2.datevalue "name"from (select sum(t.TSAI03) tvalue, TO_CHAR(t.TSAI01, 'yyyy-mm') timevaluefrom TSA009 twhere 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 dualconnect by level < 13) t2where t1.timevalue(+) = t2.datevalueorder 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') timevaluefrom TSA009 twhere 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) datevaluefrom dualconnect by level < (select to_number(substr(last_day(to_date('2012-04-10','yyyy-mm-dd')),0,2))from dual) + 1) t2where t1.timevalue(+) = t2.datevalueorder 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') timevaluefrom TSA010 twhere 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) datevaluefrom dualconnect by level < 25) t2where t1.timevalue(+) = t2.datevalueorder by t2.datevalue

為避免原文丟失,特此轉載自:https://www.cnblogs.com/GenghisKhan/archive/2012/07/10/2584571.html