SELECT X.MDATE, CASE WHEN EXISTS (SELECT 1 FROM TABLE1 T1 WHERE T1.MDATE = X.MDATE) THEN 1 ELSE 0 END FLAG FROM (SELECT TO_CHAR(TO_DATE('2015-01' || '-01', 'YYYY-MM-DD') + ROWNUM - 1, 'YYYY-MM-DD') MDATE FROM DUAL CONNECT BY ROWNUM <= ADD_MONTHS(TO_DATE('2015-01' || '-01', 'YYYY-MM-DD'), 1) - TO_DATE('2015-01' || '-01', 'YYYY-MM-DD')) X '2015-01'替换成相应的月份参数
with a as ( select 1 as id, 'adadfs' as content, '2015-01-01' as mdate from dual union all select 2, 'dsff', '2015-01-03' from dual union all select 3, 'dsgere', '2015-01-04' from dual union all select 4, 'kkll', '2015-01-31' from dual ), b as ( select to_char(to_date('2015-01-01','yyyy-mm-dd') + level - 1,'yyyy-mm-dd') as sdate from dual connect by level <= 31 ), c as ( select b.sdate, decode(a.id,null,0,1) as res from a, b where a.mdate(+) = b.sdate order by 1 ) select dbms_lob.substr(wmsys.wm_concat(res),100) as res from c
with a as ( select 1 as id, 'adadfs' as content, '2015-01-01' as mdate from dual union all select 2, 'dsff', '2015-01-03' from dual union all select 3, 'dsgere', '2015-01-04' from dual union all select 4, 'kkll', '2015-01-31' from dual ), b as ( select to_char(to_date('2015-01-01','yyyy-mm-dd') + level - 1,'yyyy-mm-dd') as sdate from dual connect by level <= 31 ), c as ( select b.sdate, decode(a.id,null,0,1) as res from ( select mdate,count(1) as id from a group by mdate ) a, b where a.mdate(+) = b.sdate order by 1 ) select dbms_lob.substr(wmsys.wm_concat(res),100) as res from c 上面的忘了原表可能存在1天有多条记录的情况了
CASE
WHEN EXISTS (SELECT 1 FROM TABLE1 T1 WHERE T1.MDATE = X.MDATE) THEN
1
ELSE
0
END FLAG
FROM (SELECT TO_CHAR(TO_DATE('2015-01' || '-01', 'YYYY-MM-DD') + ROWNUM - 1,
'YYYY-MM-DD') MDATE
FROM DUAL
CONNECT BY ROWNUM <=
ADD_MONTHS(TO_DATE('2015-01' || '-01', 'YYYY-MM-DD'), 1) -
TO_DATE('2015-01' || '-01', 'YYYY-MM-DD')) X
'2015-01'替换成相应的月份参数
( select 1 as id, 'adadfs' as content, '2015-01-01' as mdate from dual
union all select 2, 'dsff', '2015-01-03' from dual
union all select 3, 'dsgere', '2015-01-04' from dual
union all select 4, 'kkll', '2015-01-31' from dual ),
b as
( select to_char(to_date('2015-01-01','yyyy-mm-dd') + level - 1,'yyyy-mm-dd') as sdate from dual connect by level <= 31 ),
c as
( select b.sdate, decode(a.id,null,0,1) as res
from a, b
where a.mdate(+) = b.sdate
order by 1 )
select dbms_lob.substr(wmsys.wm_concat(res),100) as res from c
( select 1 as id, 'adadfs' as content, '2015-01-01' as mdate from dual
union all select 2, 'dsff', '2015-01-03' from dual
union all select 3, 'dsgere', '2015-01-04' from dual
union all select 4, 'kkll', '2015-01-31' from dual ),
b as
( select to_char(to_date('2015-01-01','yyyy-mm-dd') + level - 1,'yyyy-mm-dd') as sdate from dual connect by level <= 31 ),
c as
( select b.sdate, decode(a.id,null,0,1) as res
from ( select mdate,count(1) as id from a group by mdate ) a, b
where a.mdate(+) = b.sdate
order by 1 )
select dbms_lob.substr(wmsys.wm_concat(res),100) as res from c
上面的忘了原表可能存在1天有多条记录的情况了