하나의 컬럼에 있는 값들을 가지고 두 가지 조건으로 분리해서 SELECT하는방법
MSSQL에서 사용 가능한 방법입니다.
--SELECT * FROM HR.PAYLIST
--SELECT * FROM HR.PAYLISTSUB
--USE ISC_ERP_20140423_KGS
SELECT BASEDT, EMPLOYEENO, SUM(A.PAY1)AS A , SUM(A.PAY2) AS B
FROM (
SELECT A.BASEDT, B.EMPLOYEENO, SUM(AMOUNT) AS PAY1, SUM(0) AS PAY2 FROM HR.PAYLIST A
LEFT OUTER JOIN HR.PAYLISTSUB B ON A.GUBUN=B.GUBUN AND A.PAYLISTNO=B.PAYLISTNO
WHERE A.BASEDT BETWEEN '201303' AND '201401'
AND B.EMPLOYEENO='2073006'
AND B.PAYITEMCD LIKE 'HR025%'
GROUP BY A.BASEDT, B.EMPLOYEENO
UNION ALL
SELECT A.BASEDT, B.EMPLOYEENO, SUM(0) AS PAY1 , SUM(AMOUNT) AS PAY2 FROM HR.PAYLIST A
LEFT OUTER JOIN HR.PAYLISTSUB B ON A.GUBUN=B.GUBUN AND A.PAYLISTNO=B.PAYLISTNO
WHERE A.BASEDT BETWEEN '201303' AND '201401'
AND B.EMPLOYEENO='2073006'
AND B.PAYITEMCD LIKE 'HR026%'
GROUP BY A.BASEDT, B.EMPLOYEENO
) AS A
GROUP BY EMPLOYEENO, BASEDT
하나의 컬럼에 있는 값들을
두가지 조건으로 분리해서 서로 다른 컬럼으로 SELECT 하고싶을때 이 방법을 사용하면 굳굳!!! :D
이렇게 UNION ALL을 써서 FROM절로 싸잡은 다음에 뽑으면 됩니다. 그냥 UNION만 썼을때는 PAY1과 PAY2가 합쳐지지가 않기 때문에 FROM절로 싸잡아서 SUM함수를 사용하여 합산한 것입니다. 후후. 정말 기막히 쿼리가 탄생하게 되었습니다. 올레~!