테스트 사이트 - 개발 중인 베타 버전입니다

쿼리 질문입니다. 채택완료

우베툰 8년 전 조회 2,071

테이블의 데이터 중 연도와 분기를 가져오는 쿼리문을 작성 중입니다.


현재

 year

 quarter

 2017

 3


의 데이터만 있는 상황입니다


 year

quarter 

2017 

2017 

2017 

2017 



처럼 쿼리문을 작성하고 싶습니다.

어떤 방법이 있을까요? 도움 부탁드립니다.

DB는 mysql입니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
l
8년 전

베르만님께서 주신 답변을 조금만 응용하시면 될텐데요

현재의 쿼리는 데이터량이 많아지면 속도 이슈가 발생할 겁니다.


해서 개선하셨으면 하는 부분이 해당 분기에 값이 없으면

년도, 분기값은 해당 년도 + 분기값, 그외는 빈값으로 INSERT 해 놓으면

지금처럼 골머리 썩지 않아도 되고

속도도 고민도 덜 하셔도 될것 같습니다만...

</p><p>SELECT </p><p>    t.id, t.year, t.quarter</p><p>FROM</p><p>    (</p><p>    SELECT  id, year, 1 quarter FROM 테이블 UNION ALL </p><p>    SELECT  id, year, 2 quarter FROM <span style="font-size: 14.6667px;">테이블 </span>UNION ALL </p><p>    SELECT  id, year, 3 quarter FROM <span style="font-size: 14.6667px;">테이블 </span>UNION ALL </p><p>    SELECT  id, year, 4 quarter FROM <span style="font-size: 14.6667px;">테이블</span><span style="font-size: 14.6667px;"> </span></p><p>    ) AS t</p><p>WHERE </p><p>    t.id = '아이디'</p><p>GROUP BY </p><p>        t.year, t.quarter </p><p>ORDER BY </p><p>    t.year DESC</p><p>;</p><div>
</div><p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

8년 전

</p><p>SELECT </p><p>    a.year, b.quarter </p><p>FROM </p><p>    (SELECT DISTINCT year FROM 테이블 WHERE id = '아이디') a </p><p>    JOIN </p><p>    (</p><p>    SELECT 1 quarter FROM DUAL UNION ALL </p><p>    SELECT 2 quarter FROM DUAL UNION ALL </p><p>    SELECT 3 quarter FROM DUAL UNION ALL </p><p>    SELECT 4 quarter FROM DUAL </p><p>    ) b </p><p>ORDER BY </p><p>    a.year DESC, b.quarter ASC </p><p>;</p><p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

8년 전

단순하게 아래처럼 가능합니다.


</p><p>SELECT 2017 year, 1 quarter FROM DUAL UNION ALL </p><p>SELECT 2017 year, 2 quarter FROM DUAL UNION ALL </p><p>SELECT 2017 year, 3 quarter FROM DUAL UNION ALL </p><p>SELECT 2017 year, 4 quarter FROM DUAL</p><p>;</p><p>


로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

우베툰
8년 전
현재 쿼리가
select year, quarter from 테이블 where id='아이디' group by year, quarter order by year desc
입니다
저 쿼리를 어떻게 조합하여 수정하면 될까요?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인