본문 바로가기
프로그래밍/MSSQL

MSSQL 소계 합계 사용하기 ROLLUP

by 최돠 2015. 5. 28.

MSSQL에서 많이 쓰이는 소계 합계 구하는 방식입니다.

기본적으로 2개지는 사용하는데

ROLLUP 과 CROSS JOIN을 사용하여 구하는 법을 알려드리겠습니다. 이번페이지에서는

ROLLUP를 사용한 소계 합계를 알려드리겠습니다.

 

일단 기본적으로 아래와 같이 생성해줍니다.

create table test
(id int,
 num int,
 rank int)
 대충간단하게 작성하였습니다.
insert into test
 (id, num , rank )
 select 4, 200, 2220
 union all
 select 6, 300, 3330
 union all
 select 3, 100, 4330
 union all
 select 1, 400, 3230
 union all
 select 5, 200, 4340
 union all
 select 2, 100, 4330

 

 

select
case when num is null and id is null then '합계'
            when id is null then '소계'
               else CAST(id as varchar(10)) end as id,
      num, SUM(rank ) as rank
 from test1
 group by rollup (num , id)

위와 같이 작성을합니다.

 

여기서 중요할점은 내가 소계합계를 나타낼때 어떤것에 소계와 합계란 이름을 보여줄것인지

어느것을 가지고 소계합계를 나타낼건지를 잘확인하여  group by rollup ()안에 작성해 줍니다. 이 순서만 달라도 데이터가 뒤죽박죽으로 출력되어 이상하게 됩니다.또한 합계를 계산하고 출력할 rank부분에는 꼭 SUM()을 써서 합계가 출력이 가능하도록 해줍니다.

처음하시는 분들은 group by rollup (num , id) 이부분에서 다른 값을을 이것저것 넣어보시면서 하면 쉽게 이해하실수 있습니다.

 

 

 

'프로그래밍 > MSSQL' 카테고리의 다른 글

GROUP BY 사용하기  (0) 2015.06.01
cross join 사용하기  (2) 2015.06.01
MSSQL UNION, UNION ALL 차이 및 사용하기  (0) 2015.05.28
MSSQL ROWNUM 사용하기  (0) 2015.05.28
MSSQL LIKE 사용하기  (0) 2015.05.28

댓글