쿼리 질문입니다.
본문
테이블의 데이터 중 연도와 분기를 가져오는 쿼리문을 작성 중입니다.
현재
year |
quarter |
2017 |
3 |
의 데이터만 있는 상황입니다
year |
quarter |
2017 |
1 |
2017 |
2 |
2017 |
3 |
2017 |
4 |
처럼 쿼리문을 작성하고 싶습니다.
어떤 방법이 있을까요? 도움 부탁드립니다.
DB는 mysql입니다.
답변 3
베르만님께서 주신 답변을 조금만 응용하시면 될텐데요
현재의 쿼리는 데이터량이 많아지면 속도 이슈가 발생할 겁니다.
해서 개선하셨으면 하는 부분이 해당 분기에 값이 없으면
년도, 분기값은 해당 년도 + 분기값, 그외는 빈값으로 INSERT 해 놓으면
지금처럼 골머리 썩지 않아도 되고
속도도 고민도 덜 하셔도 될것 같습니다만...
SELECT
t.id, t.year, t.quarter
FROM
(
SELECT id, year, 1 quarter FROM 테이블 UNION ALL
SELECT id, year, 2 quarter FROM 테이블 UNION ALL
SELECT id, year, 3 quarter FROM 테이블 UNION ALL
SELECT id, year, 4 quarter FROM 테이블
) AS t
WHERE
t.id = '아이디'
GROUP BY
t.year, t.quarter
ORDER BY
t.year DESC
;
단순하게 아래처럼 가능합니다.
SELECT 2017 year, 1 quarter FROM DUAL UNION ALL
SELECT 2017 year, 2 quarter FROM DUAL UNION ALL
SELECT 2017 year, 3 quarter FROM DUAL UNION ALL
SELECT 2017 year, 4 quarter FROM DUAL
;
SELECT
a.year, b.quarter
FROM
(SELECT DISTINCT year FROM 테이블 WHERE id = '아이디') a
JOIN
(
SELECT 1 quarter FROM DUAL UNION ALL
SELECT 2 quarter FROM DUAL UNION ALL
SELECT 3 quarter FROM DUAL UNION ALL
SELECT 4 quarter FROM DUAL
) b
ORDER BY
a.year DESC, b.quarter ASC
;
답변을 작성하시기 전에 로그인 해주세요.