안녕하세요, 일주일전에 질문글을 올렸는데 큰 도움이 되었습니다, 감사합니다.
그런데 한가지 질문이 더 있어서 글을 올리게 되었습니다. 지난번월별회원가입 통계를 물어봣는데
WITH CTE_MONTHS AS (
SELECT '2017-07-01' AS THIS_DATE
UNION ALL
SELECT CONVERT(VARCHAR(10), DATEADD(DAY, 1, THIS_DATE), 120) THIS_DATE
FROM CTE_MONTHS
WHERE CONVERT(VARCHAR(10), DATEADD(DAY, 1, THIS_DATE), 120) <= '2017-07-31'
)
SELECT
A.THIS_DATE
,ISNULL(TOTAL_COUNT, 0) AS NEW
FROM
CTE_MONTHS A
LEFT JOIN (
SELECT
REGIST_DATE = CONVERT(VARCHAR(10),REGIST_DATE,121)
,COUNT(*) TOTAL_COUNT
FROM
TB_USER
WHERE
REGIST_DATE BETWEEN '2017-07-01' AND '2017-08-01'
GROUP BY CONVERT(VARCHAR(10),REGIST_DATE,121)
) B ON A.THIS_DATE = B.REGIST_DATE
Comment 4
-
자리비움
2017.08.11 15:28
-
umtaeng
2017.08.11 15:39
첫번째 사진이 원하는 모양이고 두번째 사진이 제가 뽑은 결과물입니다!
두번째사진보시면 캠퍼스코드가 001부터 쭉 있는게 아니고 결과가 있는 캠퍼스만 나타내는것 같습니다..ㅠ
-
자리비움
2017.08.11 16:07
쿼리 맨 아래에
ORDER BY REGIST_DATE ASC
넣으신 후 1일부터 차근차근 확인해보세요.
스샷이 일부라서 확인이 안되는데
1일부터 5일자에는 CAMPUS_CODE 001 이 없고, 다른 일자에 있을겁니다.
그 기간에 TOTAL_COUNT 없을것 같네요.
샘플 쿼리로 TB_USER 만 바꿔서 돌려보니 결과 잘 나오네요.
-
umtaeng
2017.08.11 19:07
요런식으로나오는데 저는 맨앞의 regist_date를 없애고 campus_code는 일단 결과에 상관없이 001부터 끝까지 일렬로 쭉 나열한후
이제 옆에 날짜에 맞춰서 몇일날 3명이 가입했으면 3이 써지는.. 형태를 원하는데 이것저것 해봐도 잘안되네요..ㅠㅠ.. 귀찮게 해드려서 죄송합니다.ㅠㅠ
샘플 데이터와 원하는 결과 모양을 올려주시면 답변 받으시기 좀 더 수월합니다.