2017-06-09 2 views
0

Vielen Dank im Voraus für Hilfe!So zeigen Sie Zeilen in Spalte mit Gesamtsumme konvertieren

Was ich versuche zu erreichen, ist dies: Ich habe eine Tabelle mit verschiedenen Gehaltsstufen in der gleichen Abteilung. Wie kann ich die Gehaltsstufen in den Spalten anzeigen, mit der unten angegebenen Anzahl für jede Spalte und dann die GROSSEN bis Gehaltsstufen für jede Abteilung anzeigen. Das ist was ich habe:

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] 

Vielen Dank für jegliche Hilfe!

+0

das verlegte Komma in der Abfrage Ignorieren, zuerst würde ich für [Pivot] suchen (https://stackoverflow.com/ Fragen/15931607/konvertieren-Zeilen zu Spalten-mit-Pivot-in-SQL-Server. Dann würde ich nach [how-to-hole-die-Summe-aller-Spalten-Werte-in-der-letzten-Reihe-eines-Ergebnisses] suchen (https://stackoverflow.com/questions/5015279/how-to-hole-die-Summe-aller-Spalten-Werte-in-der-letzten-Reihe-eines-Ergebnisses) – Utsav

+0

Vielen Dank! Ich war in der Lage, die Spalten in Zeilen zu bekommen, aber immer noch ein bisschen ein Problem, die Summen zu bekommen. Ich denke, ich vermisse etwas. Herzlichen Dank an Sie, mein Herr! – teelee

+0

Ok. Sie hätten das und die Abfrage, die Sie für dasselbe verwendet haben, erwähnen sollen, damit wir uns auf das Problem konzentrieren konnten, total zu werden. Es sieht so aus, als wäre Ranjanas Antwort hilfreich für Sie. Prost! – Utsav

Antwort

0

Versuchen Sie wie folgt vor:

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 

Das Ergebnis ist:

*-----------------*----------*------------------*---------------*---------------* 
|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   | 
*-----------------*----------*------------------*---------------*--------------- 
Verwandte Themen