2017-11-17 5 views
0

私は、ログインした回数に従業員を月ごとにグループ別にカウントするPivotクエリを持っています。グループあたりの総計を取得したいと思います。グループ。グループごとの縦の合計ピボットSQL

現在、私は唯一の私が使用しているSQLがある合計は余分な列

としてグループごとに全体の合計として表示するために取得することができます:私が得る結果の

SELECT 
    Code, 
    Full_Name, 
    [1] AS Jan, 
    [2] AS Feb, 
    [3] AS Mar, 
    [4] AS Apr, 
    [5] AS May, 
    [6] AS Jun, 
    [7] AS Jul, 
    [8] AS Aug, 
    [9] AS Sep, 
    [10] AS Oct, 
    [11] AS Nov, 
    [12] AS Dec, 
    Total 
    FROM 
    (SELECT Norgren_Group.Code 
    , Full_Name 
    , lh.Employee_Id 
    , MONTH(lh.RN_Create_Date) [Month] 
    , COUNT(lh.Employee_Id) OVER (PARTITION BY Norgren_Group_Id) as Total 
    FROM Employee_Login_History lh 
    JOIN Employee ON Employee.Employee_Id = lh.Employee_Id 
    JOIN Norgren_Group ON Norgren_Group.Norgren_Group_Id = Employee.Default_Norgren_Group_Id 
    WHERE Reporting_Region='Europe' 
    AND YEAR(lh.RN_Create_Date) = YEAR(GETDATE()) 
    ) pvt 
    PIVOT 
    (
     COUNT(Employee_Id) 
     FOR [Month] 
     IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) 
    ) AS pvttble 
    ORDER BY Code, Full_Name 

スニペットは、次のとおりです。

Code Full_Name   Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total 
    A Alexander Wipplinger 20  11 23 7 14 10 15 10 13 23 6 0 2894 
    A Andreas Grünanger 13  12 12 10 17 14 11 15 13 20 11 0 2894 
    ALPE Albert Unger   16  18 28 9 13 17 18 19 17 22 18 0 16899 
    ALPE Andreas Barz   1  0 0 0 0 0 0 0 0 0 0 0 16899 

私は何を見たいのです:

Code Full_Name   Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
    A Alexander Wipplinger 20  11 23 7 14 10 15 10 13 23 6 0 
    A Andreas Grünanger 13  12 12 10 17 14 11 15 13 20 11 0 
     Total    33  23 35 17 31 24 26 25 26 43 17 0 
    ALPE Albert Unger   16  18 28 9 13 17 18 19 17 22 18 0 
    ALPE Andreas Barz   1  0 0 0 0 0 0 0 0 0 0 0 
     Total    17  18 28 9 13 17 18 19 17 22 18 0 

答えて

1

一つの方法は、条件付きの集約に切り替えてGROUPING SETSを使用することです:

SELECT ng.Code, Full_Name, 
     SUM(CASE WHEN MONTH(lh.RN_Create_Date) = 1 THEN 1 ELSE 0 END) as Jan, 
     SUM(CASE WHEN MONTH(lh.RN_Create_Date) = 2 THEN 1 ELSE 0 END) as Feb, 
     . . . 
     SUM(CASE WHEN MONTH(lh.RN_Create_Date) = 12 THEN 1 ELSE 0 END) as Dec 
FROM Employee_Login_History lh JOIN 
    Employee e 
    ON e.Employee_Id = lh.Employee_Id JOIN 
    Norgren_Group ng 
    ON ng.Norgren_Group_Id = e.Default_Norgren_Group_Id 
WHERE Reporting_Region = 'Europe'AND 
     YEAR(lh.RN_Create_Date) = YEAR(GETDATE()) 
GROUP BY GROUPING SETS ((ng.Code, Full_Name),()); 
+0

これは私にほとんど同じ結果を与え、私はこれを使用して、各グループの全体的な合計を取得達成方法を示していませんよ? –

+0

私はピボットテーブルでグループ化セットを利用することができました! - ご協力いただきありがとうございます! –

関連する問題