현재 DB2를 이용하여 데이터를 추출하려는 쿼리를 만드는데, 사용자 측 요구로
추출 조건이 변경되었는데 어떻게 쿼리를 해야할 지 잘 모르겠네요.
여러분의 도움 부탁드립니다.
현재 변견전 조건은 문서 그룹 코드를 가져와서 보여주는 것이었는데, 조건이 바뀌어서 그룹내 문서를 가져오는 것입니다.
그런데 이때 문서는 버전관리를 하는데, 버전관리를 하는 타입에 따라 가져오는 방법이 다릅니다.
변경전 쿼리입니다.
SELECT CASE BM.BSN_CLAS_CD WHEN '14' THEN 14000
WHEN '13' THEN 16000
WHEN '12' THEN 12000
WHEN '11' THEN 10000
WHEN '04' THEN 7000 + (FO.FORM_CD)
WHEN '02' THEN 3000 + (FO.FORM_CD) END AS SEQ,
CASE WHEN BM.BSN_CLAS_CD IN ('02','04') THEN '1'
WHEN BM.BSN_CLAS_CD IN ('11','12','13', '14') THEN '2' END AS LEVL,
IMG.IMG_IDX,
(select CD_DESC_KOR_NM FROM CBSCOMM.CT_COMM_CD_DESC WHERE CD_KIND_NO = 'L00135' AND CD_DESC_NO = fo.form_cd)|| '' FORM_NM,
FO.FORM_CD,
'' AS IS_FOLD,
FO.FORM_IDX,
FO.MEMO,
BM.BSN_CLAS_CD,
BM.BND_IDX,
VE.VER_NO,
BM.CNSL_NO,
BM.FORM_CLAS_COND,
BM.MNG_DEPT_CD,
'' as PRDT_CD
FROM TEST.ET_BND_MSTR BM, TEST.ET_FORM FO, TEST.ET_VER VE, TEST.ET_IMG IMG
WHERE BM.BND_IDX = FO.BND_IDX
AND VE.FORM_IDX = FO.FORM_IDX
AND VE.VER_IDX = IMG.VER_IDX
AND FO.DEL_YN = '0'
AND (BM.BSN_CLAS_CD = '02' OR BM.BSN_CLAS_CD IN ('04','11','12','13', '14'))
AND ((BM.DOC_NO = '13021800033' AND BM.DOC_SEQ = '01'))
AND (BM.BSN_CLAS_CD LIKE '1%' OR BM.CUST_NO = '2013021800012')
ORDER BY IMG.IMG_IDX WITH UR
위의 형태가 요청변경전 쿼리입니다.
그런데 요청이 바뀌어서 데이터를 추출하는 방법이 바뀌었는데, 우선 데이터를 가져오는 필드는 같습니다. 요청에 의해
TEST.ET_VER_MNG 테이블에서 doc_type 이라는 필드의 값에 의해 where 절에서 가져와야 하는 조건이 달라지는데 이때 조건을
어떻게 줘야 할지 모르겠네요.
doc_type이 '0'과 '1' 일때는 ET_IMG 테이블의 VER_NO의 값이 TEST.ET_VER_MNG 테이블의 MAX_VER의 값과 같은 걸 가져오고,
doc_type이 '2' 인 경우는 ET_IMG 테이블의 VER_NO의 값이 TEST.ET_VER_MNG 테이블의 MAX_VER 보다 작거나 같은 걸로 가져오고
doc_type이 '3'인 경우는 ET_IMG 테이블의 VER_NO의 값이 TEST.ET_VER_MNG 테이블의 MNG_VER 보다 크거나 같은 값으로 데이터를
추출해야합니다.
이런 조건인 경우에 where 절에 조건 쿼리를 어떻게 주어야 할지 정말 모르겠네요.
아시는 분은 도움 부탁 드리겠습니다.
좋은 하루되세요.
|