ROLLUP을 사용하여 데이터 요약

ROLLUP 연산자는 부분합과 합계가 포함된 보고서를 생성할 때 유용합니다. ROLLUP 연산자는 CUBE 연산자에서 생성된 결과 집합과 비슷한 결과 집합을 생성합니다. 자세한 내용은 큐브를 사용한 데이터 요약을 참조하십시오.

CUBE와 ROLLUP 연산자의 차이는 다음과 같습니다.

  • CUBE는 선택한 열에서 모든 값의 조합에 대한 집계가 포함된 결과 집합을 생성합니다.
  • ROLLUP은 선택한 열에서 값의 계층에 대한 집계가 포함된 결과 집합을 생성합니다.

예를 들어 Inventory라는 단순 테이블에는 다음이 포함되어 있습니다.

Item                 Color                Quantity                   
-------------------- -------------------- -------------------------- 
Table                Blue                 124                        
Table                Red                  223                        
Chair                Blue                 101                        
Chair                Red                  210                        

다음은 부분합 보고서를 생성하는 쿼리입니다.

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
            ELSE ISNULL(Item, 'UNKNOWN')
       END AS Item,
       CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
            ELSE ISNULL(Color, 'UNKNOWN')
       END AS Color,
       SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP

Item                 Color                QtySum                     
-------------------- -------------------- -------------------------- 
Chair                Blue                 101.00                     
Chair                Red                  210.00                     
Chair                ALL                  311.00                     
Table                Blue                 124.00                     
Table                Red                  223.00                     
Table                ALL                  347.00                     
ALL                  ALL                  658.00                     

(7 row(s) affected)

쿼리에서 ROLLUP 키워드를 CUBE로 변경할 경우 끝에 다음 두 행이 추가로 반환되는 것을 제외하면 CUBE 결과 집합은 동일합니다.

ALL                  Blue                 225.00                     
ALL                  Red                  433.00                     

CUBE 연산은 ItemColor 값의 모든 가능한 조합에 대해 행을 생성합니다. 예를 들어 CUBEItemChairColor 값의 모든 가능한 조합(Red, BlueRed + Blue)을 보고할 뿐만 아니라 ColorRedItem 값의 모든 가능한 조합(Chair, TableChair + Table)을 보고합니다.

GROUP BY 절의 오른쪽에 지정된 열의 각 값에 대해 ROLLUP 연산은 왼쪽 열 값의 모든 가능한 조합을 보고하지 않습니다. 예를 들어 ROLLUP은 각 Color 값에 대해 Item 값의 모든 가능한 조합을 보고하지 않습니다.

ROLLUP 연산의 결과 집합은 COMPUTE BY로 반환된 결과 집합과 비슷한 기능을 합니다. 그러나 ROLLUP 연산에는 다음과 같은 장점이 있습니다.

  • ROLLUP은 단일 결과 집합을 반환하지만 COMPUTE BY는 여러 결과 집합을 반환하므로 응용 프로그램 코드가 복잡해집니다.
  • ROLLUP은 서버 커서에서 사용할 수 있지만 COMPUTE BY는 사용할 수 없습니다.
  • 쿼리 최적화 프로그램이 COMPUTE BY 실행 계획보다 효율적인 ROLLUP 실행 계획을 생성할 수 있습니다.

참고 항목

개념

COMPUTE 및 COMPUTE BY를 사용한 데이터 요약

관련 자료

SELECT(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기