안녕하세요
목록에서 통계를 뿌려야 하는데요
아래와 같이 테이블 컬럼과 데이터는 실제로 5월 11월 두개 밖에 없습니다.
구현해야 하는 부분이 1-12월까지 목록에 다 뿌리고 데이터에는 값이 있으면 그냥 뿌려주고
없으면 0으로 보여주게 하고 있는데요
그냥 union으로 1-12월 묶어서 서브쿼리 형태로만 작업하면 되는건지
아니면 case로 서브쿼리 형태로 나눠서 작업을 해야하는지 질문 드립니다.
select year, month, code, vitcas, vitti, emgcas, emvitcas, emvitti from user_month_sum
2020 5 001 433 123 23 24 1
2020 11 001 343 231 2 123 2
WITH user_month_sum(year, month, code, vitcas, vitti, emgcas, emvitcas, emvitti) AS ( SELECT 2020, 5, '001', 433, 123, 23, 24, 1 UNION ALL SELECT 2020, 11, '001', 343, 231, 2, 123, 2 ) SELECT a.year , b.month , a.code , IFNULL(c.vitcas , 0) vitcas , IFNULL(c.vitti , 0) vitti , IFNULL(c.emgcas , 0) emgcas , IFNULL(c.emvitcas, 0) emvitcas , IFNULL(c.emvitti , 0) emvitti FROM (SELECT 2020 year, '001' code) a -- 검색 조건 CROSS JOIN (SELECT 1 month UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12 ) b LEFT JOIN user_month_sum c ON a.year = c.year AND a.code = c.code AND b.month = c.month ;
안녕하세요
답변 잘 받았습니다.
주신 쿼리로 좀 원래 사용하도록 변형을 하려는데 잘 안되서
다시 질문드립니다.
WITH user_month_sum(year, month, code, vitcas, vitti, emgcas, emvitcas, emvitti) AS
(
SELECT 2020, 5, '001', 433, 123, 23, 24, 1
UNION ALL SELECT 2020, 11, '001', 343, 231, 2, 123, 2
)
해당 부분이 하드 코딩이 아니라
select year, month, code, vitcas, vitti, emgcas, emvitcas, emvitti Suser_month_sum
union all 형식으로 디비값을 셀렉트 해서 변형하는걸로 작업하다보니깐 이해가 안되고 어려운 부분이 있어서
다시 한번 질문드립니다.