안녕하세요. 항상 도움 감사하게 생각하는 xcrew 입니다.
기존의 쿼리에서 해당하는 컬럼에 값이 있으면 카운에 포함시키고 싶습니다.
SELECT A1.PART_CD
,C.YEAR_CNT PALN_CNT
,A1.CNT_02
,A1.CNT_SUM
,ROUND(A1.CNT_SUM/C.YEAR_CNT*100,1) RATE
FROM(
SELECT A.PART_CD
,SUM(DECODE(A.MONTH,'02', A.CNT,0)) CNT_02
,SUM(A.CNT) CNT_SUM
FROM(
SELECT A.PART_CD
,SUBSTR(A.SIL_YMD,5,2) MONTH
,COUNT(*) CNT
FROM CT_GIBON A, CT_DONG B
WHERE A.PART_CD = B.PART_CD
AND A.CST_NO = B.CST_NO
AND A.CST_CHG_NO = B.CST_CHG_NO
AND A.REG_DATE = B.REG_DATE
AND A.SIL_YMD = B.SIL_YMD
AND A.SIL_YMD BETWEEN '20180101' AND '20180228'
AND SUDANG_YN = 'Y'
GROUP BY A.PART_CD, SUBSTR(A.SIL_YMD,5,2)
)A
GROUP BY A.PART_CD
)A1,
CS_CODE B,
CM_CTI_PLAN C
WHERE A1.PART_CD = B.CODE_CD
AND B.USE_YN = 'Y'
AND B.GROUP_CD = 'TC58'
AND A1.PART_CD = C.PART_CD
AND C.YM = '2018'
ORDER BY A1.PART_CD
CT_DONG 이라는 테이블에
DONG_SA1, DONG_SA2, DONG_SA3, DONG_SA4, DONG_SA5, DONG_SA6이라는 테이블에 값이 들어있으면
A1.CNT_02 에 카운트를 추가하여 보여주고 싶습니다.
기존쿼리에서 A1.CNT_02의 값이 10이고
DONG_SA1에 데이터가 있으면 11이 되도록 하려면 어떻게 해야 될까요?
도움 부탁드립니다.
찍어서!!
SELECT A1.PART_CD , C.YEAR_CNT PALN_CNT , A1.CNT_02 , A1.CNT_SUM + DECODE(DONG_COMPLEX_SIZE, 0, 0, 1) AS CNT_SUM , ROUND(A1.CNT_SUM/C.YEAR_CNT*100,1) RATE FROM( SELECT A.PART_CD , SUM(DECODE(A.MONTH,'02', A.CNT,0)) CNT_02 , SUM(A.CNT) CNT_SUM FROM ( SELECT A.PART_CD , SUBSTR(A.SIL_YMD,5,2) MONTH , COUNT(*) CNT, LENGTH(TRIM(MAX(B.DONG_SA1||B.DONG_SA2||B.DONG_SA3||B.DONG_SA4||B.DONG_SA5||B.DONG_SA6))) AS DONG_COMPLEX_SIZE FROM CT_GIBON A, CT_DONG B WHERE A.PART_CD = B.PART_CD AND A.CST_NO = B.CST_NO AND A.CST_CHG_NO = B.CST_CHG_NO AND A.REG_DATE = B.REG_DATE AND A.SIL_YMD = B.SIL_YMD AND A.SIL_YMD BETWEEN '20180101' AND '20180228' AND SUDANG_YN = 'Y' GROUP BY A.PART_CD, SUBSTR(A.SIL_YMD,5,2) ) A GROUP BY A.PART_CD )A1, CS_CODE B, CM_CTI_PLAN C WHERE A1.PART_CD = B.CODE_CD AND B.USE_YN = 'Y' AND B.GROUP_CD = 'TC58' AND A1.PART_CD = C.PART_CD AND C.YM = '2018' ORDER BY A1.PART_CD
-- 1건의 점검내역이 있을 때, 해당 점검에 대한 동행자가 2명이 있으면 총 3건으로 카운트 한다? -- 제가 생각한게 맞나요? -- 맨 안쪽 쿼리만 바꿔 봤습니다. SELECT a.part_cd , SUBSTR(a.sil_ymd, 5, 2) month , COUNT(*) cnt_gibon , SUM( NVL2(b.dong_sa1, 1, 0) + NVL2(b.dong_sa2, 1, 0) + NVL2(b.dong_sa3, 1, 0) + NVL2(b.dong_sa4, 1, 0) + NVL2(b.dong_sa5, 1, 0) + NVL2(b.dong_sa6, 1, 0) ) cnt_dong FROM ct_gibon a , ct_dong b WHERE a.part_cd = b.part_cd (+) AND a.cst_no = b.cst_no (+) AND a.cst_chg_no = b.cst_chg_no(+) AND a.reg_date = b.reg_date (+) AND a.sil_ymd = b.sil_ymd (+) AND a.sil_ymd BETWEEN '20180101' AND '20180228' AND a.sudang_yn = 'Y' GROUP BY a.part_cd, SUBSTR(a.sil_ymd, 5, 2) ;