SELECT PRDT_CD, PRDT_NM,
CASE WHEN PRDT_SCLS_CD IN ('10', '11', '13', '14', '15', '18', '19', '20') THEN '1호'
WHEN PRDT_SCLS_CD = '24' AND (SELECT STK_TXTN_DCD FROM DB1 WHEN PRDT_CD = :prdt_cd) IN ('1', '4') THEN '1호'
WHEN PRDT_SCLS_CD = '24' AND (SELECT STK_TXTN_DCD FROM DB1 WHEN PRDT_CD = :prdt_cd) IN ('2', '3'. '5') THEN '2호'
WHEN PRDT_SCLS_CD = '12', '6', '17', '21', '22', '23', '26', '10', '11') THEN '2호'
END AS BASS_CD
FROM DB2
WHERE PRDT_CD = :prdt_cd
1. db1 의 prdt_cd 가 유일해야만 조인이 가능합니다.
- prdt_cd 가 여러건이 가능하다면?
- 조인을 하게 되면 자료가 중복되어 여러번 나오게 됩니다.
2. base_cd 구분이 모호합니다.
- 1호와 2호의 조건 (10, 11) 이 중복되네요?
SELECT a.prdt_cd
, a.prdt_nm
, CASE WHEN a.prdt_scls_cd IN ('10', '11', '13', '14', '15', '18', '19', '20')
OR b.stk_txtn_dcd IN ('1', '4') THEN '1호'
WHEN a.prdt_scls_cd IN ('12', '6', '17', '21', '22', '23', '26')
OR b.stk_txtn_dcd IN ('2', '3'. '5') THEN '2호'
END AS bass_cd
FROM db2 a
LEFT OUTER JOIN db1 b
ON a.prdt_scls_cd = '24'
AND a.prdt_cd = b.prdt_cd
WHERE a.prdt_cd = :prdt_cd
;