第一種解法為利用Oracle內建的all_object的sys table去做無中生有的筆數生成。
第二種解法是同事爬出文來的,用於沒有all_object的select的權限時,利用connect by level去生成所需筆數 。
解法一:
select trunc(sysdate, 'MM') + rn - 1 Calendar, decode(trunc(sysdate, 'MM') + rn - 1, trunc(sysdate, 'DD'), 'Today') high_Today from (select rownum rn from all_objects t where rownum <= trunc(LAST_DAY(sysdate), 'DD') - trunc(sysdate, 'MM') + 1)
解法二:
select trunc(sysdate, 'MM') + rn - 1 Calendar, decode(trunc(sysdate, 'MM') + rn - 1, trunc(sysdate, 'DD'), 'Today') high_Today from (select rownum rn FROM dual CONNECT BY LEVEL <= trunc(LAST_DAY(sysdate), 'DD') - trunc(sysdate, 'MM') + 1)
connect by 為階層相關的函數,詳細Functon使用可看Link
沒有留言:
張貼留言