DECLARE @DATE as datetime
SET @DATE = '2013-01-01'
SELECT A.user_group,SUM(LOG_COUNT1), SUM(LOG_COUNT2)
FROM (
SELECT user_group, COUNT(*) AS LOG_COUNT1
FROM DSLOG_INFO
WHERE LOGTYPE_ID = '100' and log_time > @date
GROUP BY user_group ) A full outer join
(
SELECT user_group, COUNT(*) AS LOG_COUNT2
FROM DSLOG_INFO
WHERE LOGTYPE_ID = '102' and log_time > @date
GROUP BY user_group ) B on a.user_group = b.user_group
GROUP BY A.user_group
-----결과-----
USER_GROUP SUM(LOG_COUNT1) SUM(LOG_COUNT2)
1팀 10 5
2팀 5 NULL
3팀 5 NULL
위와 같은 결과에서..아래와 같은 결과를 얻으려면 어떻게 해야할까요??
USER_GROUP SUM(LOG_COUNT1) SUM(LOG_COUNT2) SUM(LOG_COUNT3) ...
1팀 10 5 ?
2팀 5 NULL ?
3팀 5 NULL ?
SQL SERVER에서 위와 같은 쿼리로 같은 그룹의 다른 열의 합계를 조회하도록 했습니다.
그런데 합계를 구한 A나 B의 결과값이 NULL인 경우 조인후 결과가 안나와서 외부조인을 넣었습니다.
위처럼 다른 열의 합계를 추가해서 조회하고 싶은 경우 어떻게 짜야할지 모르겠습니다..
아예 시작이 잘못된건가요?
ISNULL 함수 등으로 해보려고 했는데 잘 되지 않네요
이것저것 해보다 멘붕이 와서 도움 요청 드립니다..
도움 주시면 감사하겠습니다
WITH TBL AS
(
SELECT '1팀' user_group, '100' logtype_id, '20140501' log_time UNION ALL
SELECT '1팀', '100', '20140503' UNION ALL
SELECT '2팀', '100', '20140502' UNION ALL
SELECT '3팀', '100', '20140503' UNION ALL
SELECT '1팀', '101', '20140501' UNION ALL
SELECT '1팀', '102', '20140501' UNION ALL
SELECT '1팀', '103', '20140501' UNION ALL
SELECT '1팀', '104', '20140501' UNION ALL
SELECT '1팀', '105', '20140430' UNION ALL
SELECT '2팀', '105', '20140501'
)
SELECT user_group
, SUM(CASE WHEN logtype_id = '100' THEN 1 ELSE 0 END)log_count1
, SUM(CASE WHEN logtype_id = '102' THEN 1 ELSE 0 END)log_count2
, SUM(CASE WHEN logtype_id = '103' THEN 1 ELSE 0 END)log_count3
, SUM(CASE WHEN logtype_id = '104' THEN 1 ELSE 0 END)log_count4
, SUM(CASE WHEN logtype_id = '105' THEN 1 ELSE 0 END)log_count5
FROM TBL
WHERE logtype_id >= '100'
AND logtype_id <= '105'
AND log_time > '2014030'
GROUP BY user_group
---------- 결과 --------------
1팀 2 1 1 1 1
2팀 1 0 0 0 1
3팀 1 0 0 0 0