mysql命令,用于基于两个不同列的总和

时间:2013-01-29 13:38:36

标签: mysql sum subquery pivot

我有一个表格,其中包含基于费用购买的条目。如果有三列我需要(部门,月份,总数)的结果,如下所示。

dept | month | total
--------------------
aaaa | octob | 8  
aaaa | octob | 4  
aaaa | novm  | 143  
bbbb | octob | 42  
bbbb | novm  | 116  
bbbb | novm  | 117  
bbbb | decm  | 5  

我希望看到这样的结果集:

dept | oct | nov | dec
----------------------
aaaa | 12 | 143  | 0
bbbb | 42 | 233  | 5

1 个答案:

答案 0 :(得分:1)

不完全是你所要求的,但我实现这一点的方式如下:

Select department, month, sum(total)
FROM MyTable
GROUP BY (department, month)

这将返回如下结果集:

department | Month | Total
  Geology  |  Oct  |  500
  Geology  |  Nov  |  400
  Biology  |  Oct  |  250

等。然后,您可以在代码中订购和使用以获得您想要的格式。

正是你所要求的是:

SELECT department, SUM(CASE WHEN Month='oct' THEN Total END) as Oct,
   SUM(CASE WHEN name='Nov' THEN Total END) as Nov
FROM MyTable
Group By (department)

虽然我不完全确定这可以与group by一起正常工作。