다음과 같이 조건절에 LIKE를 사용해서 일자의 6자리까지만 비교하는 SQL문장이 있습니다.
-------------------------------------------------------------------------------------------------------------------------------
SELECT
C.col1
,C.col2
,MAX(GREATEST(A.TOT_AMT)) AS TOT_AMT
FROM TABLE_C C,
TABLE_A A
WHERE A.col1 = C.col1
AND A.YYMMDD LIKE SUBSTR(C.LST_YMD,1,6)||'%'
GROUP BY C.col1, C.col2
-------------------------------------------------------------------------------------------------------------------------------
A.YYMMDD LIKE SUBSTR(C.LST_YMD,1,6)||'%'
--> 그런데 LIKE뒤에 string이나 PROC의 호스트 변수 말고 저렇게 컬럼명이 오는 것을
DB2에서는 허용을 하지 않아서 다른 방법을 생각해야 하는데 도무지 떠오르지가 않습니다.
즉 이렇습니다.
A.YYMMDD LIKE SUBSTR('20120520', 1,, 6)||'%' (OK)
A.YYMMDD LIKE SUBSTR(:yyyymmdd, 1, 6)||'%' (OK)
A.YYMMDD LIKE SUBSTR(C.LST_YMD,1,6)||'%' (ERROR)
A.YYMMDD를 substr(A.YYMMDD, 1, 6)으로 만들어서 LIKE대신 =연산을 할까 했지만 인덱스를 사용해야 해서 곤란하고요.
어떤 방법이 있을까요?