TO_NUMBER, CASE, IN, UNION ALL

2012. 10. 30. 16:55 IT/Sql

기존 쿼리결과에
다른 쿼리를 UNION ALL 하는 예제
 
SELECT 
    PROF_GB,
    TO_NUMBER(:LECTURE_SEQ) AS LECTURE_SEQ, 
    --입력받는 LECTURE_SEQ가 문자열일때 TO_NUMBER를 통하여 문자->숫자로 바꿔줌
    USER_ID
FROM 
(                   
    SELECT 
        CASE
        WHEN (SELECT PROF_ID FROM LMS_LECTURE WHERE LECTURE_SEQ = :LECTURE_SEQ) = A.USER_ID  
        THEN 1
        WHEN (SELECT CPROF_ID FROM LMS_LECTURE WHERE LECTURE_SEQ = :LECTURE_SEQ) = A.USER_ID  
        THEN 2
        WHEN (SELECT CPROF_ID2 FROM LMS_LECTURE WHERE LECTURE_SEQ = :LECTURE_SEQ) = A.USER_ID  
        THEN 3
        WHEN (SELECT CPROF_ID3 FROM LMS_LECTURE WHERE LECTURE_SEQ = :LECTURE_SEQ) = A.USER_ID  
        THEN 4
        ELSE 5  --학생인 경우
        END AS PROF_GB,
    A.*
    FROM
        LMS_USER A
)
WHERE PROF_GB IN (1,2,3,4)  --IN을 사용하여 PROF_GB가 1,2,3,4에 해당하는 결과 골라내기
UNION ALL   --위, 아래 쿼리의 결과를 하나로 합치기(중복 제거X) UNION은 중복 제거
    SELECT
        5 AS PROF_GB,   --  A테이블에 PROF_GB가 없지만 위의 결과와 합치기 위해 임의로 5설정
        A.LECTURE_SEQ, 
        A.USER_ID
    FROM 
        LMS_LECTURE_REGIST A
    WHERE 
        LECTURE_SEQ = :LECTURE_SEQ
ORDER BY PROF_GB    --검색 결과를 PROF_GB로 정렬

'IT > Sql' 카테고리의 다른 글

현재, 과거, 미래의 날짜, 시간 구하기  (0) 2012.11.08
AS  (0) 2012.11.08

Recent Posts

Recent Comments

Recent Trackbacks

Copyright © 집착남의 이야기 All Rights Reserved | JB All In One Version 0.1 Designed by CMSFactory.NET