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 ;