where 뒤에
case 문을 넣었습니다..
맞는 문장인지 궁금합니다..
SELECT
YMTH
,NUMB
,ENDX
,ENDX
,BALE
FROM
FS_DPCTXM
WHERE
STDS_YMTH = case when SUBSTR( '201608', 1, 4) <= '2014' then SUBSTR('201608', 1, 4) -1 || '12'
when SUBSTR( '201608', 1, 4) > '2014' then TO_CHAR(TO_DATE(SUBSTR('201608', 1, 6), 'YYYYMM') -1, 'YYYYMM')
END
이렇게 써도 무방한지 궁금합니다.
감사합니다.
문법상 문제는 없는지?
의미상 문제는 없는지?
구문을 좀더 간결하게 개선할 수는 없는지?
등등을 확인하시면 됩니다.
입력값이
- 2014년 까지는 전년도 12월
- 2015년 부터는 전월
의미상 이게 맞나요?
SELECT * FROM fs_dpctxm WHERE stds_ymth = CASE WHEN :v_yyyymm < '2015' THEN TO_CHAR(TRUNC(TO_DATE(:v_yyyymm, 'yyyymm'), 'yy')-1, 'yyyymm') ELSE TO_CHAR(TO_DATE(:v_yyyymm, 'yyyymm')-1, 'yyyymm') END ;