SQL增量列

时间:2015-03-06 16:15:56

标签: mysql sql-server

我试图在一列中显示一个学期的聚合,下一学期在第二列中显示聚合,第三学期聚合在第三列。还有真正的表格,我不知道有多少状态代码...

我有一个学期表:

  Id    Semester
+----+----------+
| 1     Current |
| 2     Next    |
| 3     2 Ahead |
+----+----------+

我有一个简单的项目表:

 Id    Title    Status   termId
+----+--------+---------+--------+
| 1      A        OK        1    |
| 2      B        Bad       1    |
| 3      C        OK        1    |
| 4      D        Bad       2    |
| 5      E        OK        2    |
| 6      F        Bad       3    |
| 7      G        OK        2    |
+----+--------+---------+--------+

这是所需的输出:

  Status    CurrentCount   NextCount   2AheadCount
+---------+--------------+-----------+-------------+
|  OK            2            1             0      |
|  Bad           1            1             1      |
+---------+--------------+-----------+-------------+

你能做什么才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以对group by使用条件聚合:

select status, 
    sum(case when termId = 1 then 1 else 0 end) CurrentCount,    
    sum(case when termId = 2 then 1 else 0 end) NextCount,
    sum(case when termId = 3 then 1 else 0 end) 2AheadCount
from project
group by status