2017-02-01 1 views
0

Ich habe eine Tabelle mit diesen DatenPivot die Tabelle zusammen mit Gesamtsumme

+------------+----------------+------------+ 
| Department | ProgressStatus | TasksCount | 
+------------+----------------+------------+ 
| A   | Completed  |   1 | 
| C   | Completed  |   4 | 
| D   | Completed  |   1 | 
| B   | Pending  |   8 | 
| A   | Pending  |   10 | 
| C   | Pending  |   12 | 
| D   | Pending  |   2 | 
| C   | Progress  |   4 | 
+------------+----------------+------------+ 

Ich brauche eine Abfrage zu schreiben, um diese Ausgaben zu bekommen (es sieht aus wie eine einfache Pivot-Tabelle).

+-------------+-----------+---------+----------+--------------+ 
| Departments | Completed | Pending | Progress | Total Tasks | 
+-------------+-----------+---------+----------+--------------+ 
| A   |   1 |  10 |  0 |   11 | 
| B   |   0 |  8 |   |   8 | 
| C   |   4 |  12 |  4 |   20 | 
| D   |   1 |  2 |   |   3 | 
+-------------+-----------+---------+----------+--------------+ 
+1

Was haben Sie bisher versuchen? –

+0

Wirklich, ich bin neu in SQL. also alles, was ich tun könnte, ist die Totsl Tas Aufgaben für jede Abteilung, aber ich konnte nicht den Rest bekommen :( –

Antwort

4

Bedingte SUM und GROUP BY

select 
    department, 
    sum(case when ProgressStatus = 'Completed' then TasksCount end) Completed, 
    sum(case when ProgressStatus = 'Pending' then TasksCount end) Pending, 
    sum(case when ProgressStatus = 'Progress' then TasksCount end) Progress, 
    sum(TasksCount) Total 
from your_table 
group by department; 
+0

Es hat funktioniert :) danke. Könnten Sie mir bitte eine gute Quelle nennen, wo ich SQL lernen kann –

+0

@Gurv bravo man !! so optimierte Abfrage –

0
BY using pivot i tried like this 

SELECT Department,isnull(Completed,0) Completed,isnull([Pending],0) [Pending],isnull([Progress],0) [Progress] 
      ,isnull(Completed,0)+isnull([Pending],0)+isnull([Progress],0) as 'total' 
    FROM #Table2 
    PIVOT (sum([TasksCount]) 
     for [ProgressStatus] in ([Completed], [Pending], [Progress])) AS pvt 

Ausgang

Department Completed Pending Progress total 
A    1  10  0   11 
B    0  8  0   8 
C    4  12  4   20 
D    1  2   0   3 
+0

funktioniert es auch. aber ich kann es jetzt nicht verstehen :(. Danke für Ihre Hilfe –

+0

nur Beispiele von Pivot Sie können Sie verstehen, was passiert ist ... @ EmadAli – Chanukya