WITH code AS(
SELECT 1 cd, 'PC' nm FROM dual
UNION ALL SELECT 2, 'Monitor' FROM dual
UNION ALL SELECT 3, 'NoteBook' FROM dual
),
calendar AS(
SELECT '20111201' dt FROM dual
UNION ALL
SELECT '20111202' dt FROM dual
UNION ALL
SELECT '20111203' dt FROM dual
UNION ALL
SELECT '20111204' dt FROM dual
UNION ALL
SELECT '20111205' dt FROM dual
)
, data AS
(
SELECT '20111201' dt, 1 cd, 10 v FROM dual
UNION ALL SELECT '20111201', 2, 20 FROM dual
UNION ALL SELECT '20111201', 2, 21 FROM dual
UNION ALL SELECT '20111201', 2, 22 FROM dual
UNION ALL SELECT '20111201', 3, 30 FROM dual
UNION ALL SELECT '20111202', 1, 10 FROM dual
UNION ALL SELECT '20111202', 3, 30 FROM dual
UNION ALL SELECT '20111204', 1, 10 FROM dual
UNION ALL SELECT '20111204', 2, 40 FROM dual
UNION ALL SELECT '20111205', 3, 50 FROM dual
)
select decode(GROUPING(aa.nm), 0, aa.nm, '일별소계')nm, aa.dt, nvl(sum(b.v), 0) score
from (select a.cd, a.nm, b.dt
from code a,
calendar b) aa, data b
where aa.dt = b.dt(+)
and aa.cd = b.cd(+)
group by ROLLUP( aa.nm), aa.dt
order by aa.dt, aa.nm
최근 덧글