쿼리 질문드립니다 0 6 732

by 짱구 [Tibero] [2016.04.14 13:51:05]


안녕하세요.

공부를 하다가 궁금한 점이 있어 질문드립니다.

 

SELECT 사원번호

        ,  사원명

  FROM 사원테이블

 

이렇게 테이블 한개가 있는데

사원테이블에 갯수가 3개 이하이면

빈칸으로 3개칸으로 채우고 싶습니다.

SELECT 사원번호

        , 사원명

   FROM 사원테이블

UNION ALL

SELECT ' ' AS 사원번호

        , ' ' AS 사원명

  FROM 임의의테이블

WHERE ROWNUM < 4

이렇게 하니 사원수가 2명이있을경우 총 5개의 레코드가 나오더군요..

최대 레코드가 3개가 되게 하고싶은데 알려주세요!

by 짱구 [2016.04.14 13:53:24]

사원테이블에 사원수가 4명이상일 경우에는 정상적으로 보이도록 하고싶습니다.


by jkson [2016.04.14 14:12:43]

SELECT 사원번호, 사원명
  FROM (SELECT ROWNUM RN, 사원번호, 사원명 
          FROM 사원테이블
       ) A FULL OUTER JOIN (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL < 4) B
     ON (A.RN = B.LV)

이렇게 하면 될 것 같은데 더 좋은 방법 있을까요?

 


by 마농 [2016.04.14 14:34:10]

더 좋을지는 모르겟지만.. 일단 Full Outer Join 을 제거해 봤습니다.

SELECT 사원번호, 사원명
  FROM (SELECT LEAST(ROWNUM, 3) rn, 사원번호, 사원명 FROM 사원테이블) a
 RIGHT OUTER JOIN (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 3) b
    ON a.rn = b.lv
;

 


by jkson [2016.04.14 14:48:50]

아무래도 full outer 보단 좋겠죠~ 감사합니다. 나중에 써먹어야겠네요ㅋ


by 마농 [2016.04.14 14:24:32]
SELECT 사원번호, 사원명
  FROM 사원테이블
 UNION ALL
SELECT null, null
  FROM dual
 WHERE LEVEL <= (SELECT 3 - COUNT(*) FROM 사원테이블)
 CONNECT BY LEVEL <= 3
;

 


by 짱구 [2016.04.14 14:31:33]

감사합니다!

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