sql >> データベース >  >> RDS >> Sqlserver

グループ化セット:他の特定の列に小計を表示しますか?

    小計を別のレイヤーで視覚的に処理したいかもしれないジェイミーに同意しますが、試してみたいのは GROUPING() を使用することです 列の関数。 GROUPING SETS の一部である場合、この関数は 1 を返します。 小計、通常の列の場合は 0。 http://technet.microsoft.com/en- us/library/ms178544(SQL.90).aspx

    テストしたサンプルデータを含めました。最初の WITH emp_test AS () を削除します select ステートメントを使用する場合。

    私のテストデータ:

    WITH emp_test AS
    (
       SELECT 10 AS DEPTNO, 7782 AS EMPNO, 20000 AS sal
       UNION ALL SELECT 10, 7839, 10000
       UNION ALL SELECT 20, 7566, 5950
       UNION ALL SELECT 20, 7788, 6000
    )
    

    別の列で小計を取得するための回答:

    SELECT deptno, empno
       , CASE
          WHEN GROUPING(empNo) = 1 THEN null
          ELSE SUM(sal)
         END as sum_salary
       , CASE
          WHEN GROUPING(empno) = 1 THEN SUM(sal)
          ELSE NULL
         END AS SubTotal
    FROM emp_test
    GROUP BY GROUPING SETS (DeptNo, Empno), (DeptNo)
    


    1. Pl/sqlでメールを送信する方法

    2. PHPテーブル作成エラー1064

    3. 2 つの SQL Server データベースをマージする

    4. MySQLとSQLの違いは何ですか?