2017-06-09 7 views
0

ありがとうございました!表示方法行を総計で列に変換

これは私が達成しようとしていることです:私は、同じ部門に異なる給与グレードのテーブルを持っています。どのようにして給与等級を列に表示することができますか(各列については下の数を参照)、部門ごとに給与グレードを表示します。これは私が持っているものです:

Dept_Num Dept_Name Salary_Grade TOTAL_SalaryGrade 
2005   Mrktg    1  39 
2005   Mrktg    2  26 
2005   Mrktg    3   5 
2010   Payroll   1  20 
2010   Payroll   2   8 
2015   Acct    1   6 
2015   Acct    3   6 

Dept_Num Dept_Name Salary_Grade 1 Salary_Grade 2 Salary_Grade 3 
2005   Mrktg   39   26    5  
2010   Payroll   20   8    0  
2015   Acct    6   0    6  
TOTAL_SalaryGrade    65   34    11 



SELECT[Dept_Num] 
    ,[Dept_Name] 
    [Salary_Grades], 
    [TOTAL_Salary_Grades], 
FROM [Employees] 

ありがとうございました!

+0

、最初私は[ピボット](https://stackoverflow.com/を検索なります質問/ 15931607/convert-rows-to-columns-using-pivot-in-sql-server)それから、私は[最終結果の列の値の合計をどのように取得するか]を検索します(https://stackoverflow.com/questions/5015279 /最後に得られた列の値の合計を得る方法 – Utsav

+0

ありがとうございました!私は列で列を取得することができましたが、合計を取得するのに少し問題がありました。私は何かが足りないと思う。あなたに感謝しています! – teelee

+0

あなたはそれを言及すべきであり、私たちが合計を得る問題に焦点を当てることができるように同じものにあなたが使用したクエリ。いつもRanjanaの答えがあなたのために役立つように見えます。乾杯! – Utsav

答えて

0

試行は、次のように

CREATE TABLE EMPLOYEES (Dept_Num INT, Dept_Name CHAR(20), Salary_Grade INT, TOTAL_SalaryGrade INT) 
INSERT INTO EMPLOYEES VALUES (2005,'Mrktg' ,1,39) 
INSERT INTO EMPLOYEES VALUES (2005,'Mrktg' ,2,26) 
INSERT INTO EMPLOYEES VALUES (2005,'Mrktg' ,3, 5) 
INSERT INTO EMPLOYEES VALUES (2010,'Payroll',1,20) 
INSERT INTO EMPLOYEES VALUES (2010,'Payroll',2, 8) 
INSERT INTO EMPLOYEES VALUES (2015,'Acct' ,1, 6) 
INSERT INTO EMPLOYEES VALUES (2015,'Acct' ,3, 6) 

(SELECT convert(varchar,Dept_Num) [Dept_Num],Dept_Name, isnull([1],0) [Salary_Grade 1],isnull([2],0) [Salary_Grade 2],isnull([3],0) [Salary_Grade 3] from 
      (
       select Dept_Num 
        , Dept_Name 
        , TOTAL_SalaryGrade 
        , Salary_Grade 
       from EMPLOYEES 
      ) x 
      pivot 
      (
       SUM(TOTAL_SalaryGrade) 
       for Salary_Grade in ([1],[2],[3]) 
      ) p) 

union all 
select 'TOTAL_SalaryGrade','',[1],[2],[3] from 
(SELECT SUM (TOTAL_SalaryGrade) as total,Salary_Grade  FROM EMPLOYEES GROUP BY Salary_Grade) b 
pivot 
(sum(total) for Salary_Grade in ([1],[2],[3])) q 

結果がクエリに置き忘れカンマを無視

*-----------------*----------*------------------*---------------*---------------* 
|Dept_Num   | Dept_Name| Salary_Grade 1 |Salary_Grade 2 |Salary_Grade 3| 
*-----------------*----------*------------------*---------------*--------------- 
|2015    | Acct  |  6   | 0   | 6   | 
*-----------------*----------*------------------*---------------*--------------- 
|2005    | Mrktg |  39   | 26   | 5   | 
*-----------------*----------*------------------*---------------*--------------- 
|2010    | Payroll |  20   | 8   | 0   | 
*-----------------*----------*------------------*---------------*--------------- 
|TOTAL_SalaryGrade|   |  65   | 34   |11   | 
*-----------------*----------*------------------*---------------*--------------- 
関連する問題