2023.04.19(해당컬럼의 데이터가 O인 것만 골라서 출력하기)

SaGo_MunGcci·2023년 4월 19일
0

Oracle

목록 보기
10/12

내가 하고 싶은기능이 위 쿼리를 조회했을때 CC_MJ의 컬럼이 O인 수검자들만 골라서 GRMJDQQAA에 데이터가 없으면 'X' 있으면 ''로 출력하고 싶음

,(SELECT CASE WHEN COUNT(PATNO) <= 0 THEN 'X' ELSE '' END 
     FROM GRMJDQQAA QQAA		                        
    WHERE 1=1		                        
      AND QQAA.PATNO            = PATNO
      AND QQAA.VIST_SN          = VIST_SN		
      AND QQAA.HSTK_VRSN_CD     = '0101'
      AND QQAA.HSTK_TYP_CD      = 'GMJ01'
      AND CC_MJ = 'O'      
      ) AS EXAMPLE1

이렇게 작성하니까 AND CC_MJ = 'O' 이 조건이 안걸림

 ,(CASE WHEN CC_MJ = 'O' AND 
          (SELECT COUNT(PATNO) FROM GRMJDQQAA QQAA
           WHERE 1=1
           AND QQAA.PATNO = REPORT.PATNO
           AND QQAA.VIST_SN = REPORT.VIST_SN
           AND QQAA.HSTK_VRSN_CD = '0101'
           AND QQAA.HSTK_TYP_CD = 'GMJ01') <= 0
  THEN 'X' ELSE '' END ) AS EXAMPLE  

이렇게 따로 걸어주니까 제대로 걸렸다.
조건이 안걸리는 쿼리의 PATNO의 COUNT는 GRMJDQQAA만 카운트를 해서 반환하는 것같다.

여튼 WHERE절에 join해서 안되면 CASE WHEN으로 따로 따로 조건을 걸어보자!

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글