2017-02-01 108 views
0

沿表我有这些数据枢轴与总和

+------------+----------------+------------+ 
| 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 | 
+------------+----------------+------------+ 

我需要编写一个查询来获取这些输出(它看起来像一个简单的透视表)表。

+-------------+-----------+---------+----------+--------------+ 
| 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

那你试试这么远吗? –

+0

Actully我是新来的SQL。所以我所能做的就是为每个部门制定一些小任务,但我无法得到其余的部分:( –

回答

4

使用条件SUM和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

它工作:)谢谢。你能告诉我关于哪里可以学习SQL的好资源吗 –

+0

@Gurv bravo man !!所以优化查询 –

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 

输出

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

它也可以。但我现在无法理解它:(谢谢你的帮助 –

+0

只看到关键点的例子,你可以理解发生了什么...... @ EmadAli – Chanukya