2008/04/29

decode 函數的妙用

  前陣子使用者要求一個報表,只要遇到每月二日,就撈取上個月資料,否則只取當月份資料。
  因為天生很懶,不想用多個sql ,只好到處想有什麼語法可以達成目的。Oracle decode函數滿足了我的需求:

SELECT DECODE(TO_CHAR(SYSDATE, 'DD'),
'01', TO_CHAR(SYSDATE-10, 'YYYYMM') || '01', -- 1 日
'02', TO_CHAR(SYSDATE-10, 'YYYYMM') || '01', -- 2 日 都以上個月的一日為資料起算日.
TO_CHAR(SYSDATE, 'YYYYMM') || '01') -- '03' 之後以該月份.
FROM DUAL