ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ROLLUP
    개발 관련/MS-SQL 2013. 10. 30. 14:17

    ROLLUP


    단순 GROUP BY 집계 행과 부분합 또는 상위 집계 행은 물론 총합계 행을 생성합니다.
    반환되는 그룹화 수는 <composite element list>의 식 수에 1을 더한 값과 같습니다.


    SELECT * from T_GROUPING

    아래와 같은 테이블이 있고 T_NUM 값의 합계를 구하고 싶을 때
    ROLLUP을 사용하면 된다.
    (ROLLUP을 모를 때는 임시 테이블을 이용해서 데이터를 합한후에 INSERT를 했을 거 같다.)


    SELECT ISNULL(T_NAME, '합계') AS T_NAME, SUM(T_NUM) AS T_NUM
    from T_GROUPING
    GROUP BY  ROLLUP(T_NAME)
    ORDER BY T_NUM


    실제로 사용해보니 굉장히 편하게 처리 할 수 있을 듯 하다.
    또한 장점으로 생각되는게 통계부분에서 사용한다면 전체 총합을 ROW로 받을 수 있어서 데이터를 그냥 보여주기만 하면 되니.......DB는 꾸준히 공부해야 할 듯 하다.



    ROLLUP 과 비슷한 WITH ROLLUP이 있는데
    WITH ROLLUP은 MS에서 사용을 자제하라고 하는데 자세한 사항은 아래 문구를 참조하시길...

    Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. GROUP BY에서 제공하는 일반 행과 더불어 요약 행을 결과 집합에 포함하도록 지정합니다. 그룹은 그룹의 가장 낮은 수준부터 가장 높은 수준까지 계층 순서로 요약됩니다. 그룹의 계층은 그룹 열이 지정된 순서에 의해 결정됩니다. 따라서 그룹 열의 순서를 바꾸면 결과 집합에 생성되는 행의 개수에 영향을 미칩니다.

    중요 정보중요

    CUBE 또는 ROLLUP을 사용할 경우 AVG(DISTINCT column_name), COUNT(DISTINCT column_name) 및 SUM(DISTINCT column_name)과 같은 고유 집계는 지원되지 않습니다. 이러한 고유 집계를 사용하면 SQL Server 데이터베이스 엔진에서 오류 메시지를 반환하고 쿼리를 취소합니다.



    더 자세한 사항은 MSDN 라이브러리에서 확인 바랍니다.


     

     

     

Designed by Tistory.