복붙노트

[SQL] 합계로 요약 행 추가

SQL

합계로 요약 행 추가

나는 미친이 소리를 알고 아마 이런 식으로해서는 안하지만이 같은 뭔가가 필요 - 내가 SELECT [유형], [총 판매] 전에서에서 기록이

나는 테이블의 끝 (후)에서 SUM을 보여주기 위해 마지막에 추가 행을 추가하고 싶습니다. 이것은 할 수 있을까요?

해결법

  1. ==============================

    1.당신은 SQL Server 2008 또는 이후 버전에있는 경우, 당신은 기능에 의해 ROLLUP () 그룹을 사용할 수 있습니다 :

    당신은 SQL Server 2008 또는 이후 버전에있는 경우, 당신은 기능에 의해 ROLLUP () 그룹을 사용할 수 있습니다 :

    SELECT
      Type = ISNULL(Type, 'Total'),
      TotalSales = SUM(TotalSales)
    FROM atable
    GROUP BY ROLLUP(Type)
    ;
    

    이것은이 쿼리에서 NULL이 롤업 행, 그랜드 총을 가진 하나를 나타냅니다 있도록 유형 열이 널 (null)을 가지고 할 수 있다고 가정합니다. 유형 열은 자신의 널 (null)을 가질 수 있습니다 경우, 전체 행에 대해 회계의 더 적절한 유형은 Declan_K의 대답 @에서, 즉 GROUPING () 함수를 사용하여 같은 것이다 :

    SELECT
      Type = CASE GROUPING(Type) WHEN 1 THEN 'Total' ELSE Type END,
      TotalSales = SUM(TotalSales)
    FROM atable
    GROUP BY ROLLUP(Type)
    ;
    
  2. ==============================

    2.이것은 더 강력한 그룹화 / 롤업 구문은 SQL 서버 2008+에 사용할 것입니다. 우리가 추측 할 필요가 없습니다 당신이 사용하고있는 버전을 지정하는 것이 유용합니다.

    이것은 더 강력한 그룹화 / 롤업 구문은 SQL 서버 2008+에 사용할 것입니다. 우리가 추측 할 필요가 없습니다 당신이 사용하고있는 버전을 지정하는 것이 유용합니다.

    SELECT 
      [Type] = COALESCE([Type], 'Total'), 
      [Total Sales] = SUM([Total Sales])
    FROM dbo.Before
    GROUP BY GROUPING SETS(([Type]),());
    

    크레이그 프리드먼 GROUPING SETS를 소개하는 좋은 블로그 포스트를 작성했습니다.

  3. ==============================

    3.사용 조합을 시도 모두 아래로

    사용 조합을 시도 모두 아래로

    SELECT [Type], [Total Sales] From Before
    union all
    SELECT 'Total', Sum([Total Sales]) From Before
    

    당신이 주문에 문제가있는 경우에, 나는-하나는 제안이 시도 :

    select [Type], [Total Sales] 
    from (SELECT [Type], [Total Sales], 0 [Key] 
          From Before 
          union all 
          SELECT 'Total', Sum([Total Sales]), 1 From Before) sq 
    order by [Key], Type
    
  4. ==============================

    4.당신은 ROLLUP 연산자를 사용할 수 있습니다

    당신은 ROLLUP 연산자를 사용할 수 있습니다

    SELECT  CASE 
                WHEN (GROUPING([Type]) = 1) THEN 'Total'
                ELSE [Type] END AS [TYPE]
            ,SUM([Total Sales]) as Total_Sales
    From    Before
    GROUP BY
            [Type] WITH ROLLUP
    
  5. ==============================

    5.당신은 ROLLUP 대신 그룹화 집합 집계 기능을 사용하지 않고 더 열 값을 표시하려면 :

    당신은 ROLLUP 대신 그룹화 집합 집계 기능을 사용하지 않고 더 열 값을 표시하려면 :

    SELECT
      Type = ISNULL(Type, 'Total'),
      SomeIntColumn = ISNULL(SomeIntColumn, 0),
      TotalSales = SUM(TotalSales)
    FROM atable
    GROUP BY GROUPING SETS ((Type, SomeIntColumn ), ())
    ORDER BY SomeIntColumn --Displays summary row as the first row in query result
    
  6. from https://stackoverflow.com/questions/17934318/add-a-summary-row-with-totals by cc-by-sa and MIT license