쿼리 질문입니다. 0 4 756

by 후인구 [SQL Query] [2019.08.06 21:05:56]


SELECT WTIME FROM P

WHERE TCODE = 'BBB'

AND 1500 BETWEEN STIME AND ETIME

UNION ALL

SELECT WTIME FROM T

WHERE TCODE = 'AAA'

UNION ALL

;

 

조회는 1건식 2개가 나오기도 하고 위에 쿼리는 조회가 되기도 하고 안되기도 합니다. 밑에 UNION ALL 밑에 쿼리는 무조건 1건 조회됩니다.

 

2건이 나오면 위에 쿼리가, 1건이 나오면 밑에 쿼리 1건만 조회되게 하고 싶은데요

 

고수님들의 답변 부탁드릴게요

 

 

by 생각 [2019.08.07 08:53:48]

요청 데이터와 결과 데이터를 올려주시는게 좋을 것 같아요.

문맥 상 이해를 못하겠어요.


by 꼬랑지 [2019.08.07 13:29:27]
테이블에 대한 정보가 너무 없어서 답변달기 힘드네요

SELECT * FROM (
    SELECT ENAME,FLAG,COUNT(*) OVER() CNT FROM (
        SELECT ENAME,EMPNO ,'A' FLAG 
        FROM EMP
        WHERE 1=1
        AND EMPNO='7360'
        UNION ALL
        SELECT ENAME,NULL EMPNO,'B' FLAG 
        FROM BONUS
    ) 
)
WHERE 1=1
AND (CASE WHEN CNT>1 THEN 'A' ELSE 'B' END)=FLAG

위 쿼리에서 BONUS 테이블에는 1건의 데이타가 있고 조건문이 없으니 무조건 1건이 나옵니다.
EMP 테이블에는 EMPNO 값에 따라 데이타가 나오기도 하고 안나오기도 합니다.
이 두테이블의 조회건수를 세어서 1보다 크면 EMP테이블 데이타만, 그렇지 않다면 BONUS테이블 데이타만 추출할 수 있습니다.

 


by 후인구 [2019.08.07 20:14:56]

감사합니다


by 마농 [2019.08.09 08:07:02]
SELECT wtime
  FROM (SELECT wtime
          FROM p
         WHERE tcode = 'BBB'
           AND 1500 BETWEEN stime AND etime
         UNION ALL
        SELECT wtime
          FROM t
         WHERE tcode = 'AAA'
        )
 WHERE ROWNUM = 1
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입