데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
skey | scode | stype | ssize | sunit |
1 | 4565553 | 1 | 15 | mm |
2 | 4565553 | 2 | 4 | mm |
3 | 4565553 | 3 | 2 | mm |
4 | 4565553 | 4 | 74 | gr |
5 | 1231115 | 1 | 41 | mm |
6 | 1231115 | 2 | 5 | mm |
7 | 1231115 | 3 | 4 | mm |
8 | 1231115 | 4 | 52 | gr |
밑으로 쭈욱 저런식으로 4개씩 들어간다고 가정
scode가 4개씩 나타나는 것을 한줄씩으로 나타내고
그 줄에는 scode, stype이 1인것과 2인것의 size를 곱한 값,
stype이 3인것의 size,
stype이 4인것의 size 를
한줄로 나타내고 싶습니다.
select 1 skey,4565553 scode,1 stype,15 ssize,'mm' sunit into #T union all
select 2,4565553,2,4,'mm' union all
select 3,4565553,3,2,'mm' union all
select 4,4565553,4,74,'gr' union all
select 5,1231115,1,41,'mm' union all
select 6,1231115,2,5,'mm' union all
select 7,1231115,3,4,'mm' union all
select 8,1231115,4,52,'gr'
----------------------------------------
select scode,
max(case stype when 1 then ssize end) * max(case stype when 2 then ssize end) [ssize1 x ssize2],
max(case stype when 3 then ssize end) ssize3,
max(case stype when 4 then ssize end) ssize4
from #T
group by scode
/*
scode ssize1 x ssize2 ssize3 ssize4
----------- --------------- ----------- -----------
1231115 205 4 52
4565553 60 2 74
경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다.
(2개 행이 영향을 받음)
*/