根据mysql查询中的case语句选择列的总和

时间:2017-01-14 02:10:56

标签: mysql select sum case

我有一个包含三列的表格: 商店名称 2.数据类型(销售,退货) 3.数量

---------------------------
|  Stores |  Data  |  Qty |
---------------------------
|    HM   | Sales  |  15  |
|    RD   | Sales  |  10  |
|    HM   | Return |   4  |
|    RD   | Return |   2  |

我想选择所有商店名称,销售数量,返回数量如下

--------------------------
| Store | Sales | Return |
--------------------------
|   HM  |   15   |   4   |
|   RD  |   10   |   2   |

以下是我尝试的内容:

SELECT store, 
CASE `data`
WHEN 'Sales'  THEN SUM(qty)
ELSE NULL
END as `Sales`,
CASE `data`
WHEN 'Return' THEN SUM(qty)
ELSE NULL
END as `Return`
FROM `full_report`
GROUP BY store

结果:我的销售数量错误,而返回数量则为空!

1 个答案:

答案 0 :(得分:1)

您可以使用条件聚合。 。 。将casesum()混合:

select fr.store,
       SUM(case when fr.data = 'Sales' then fr.qty else 0 end) as Sales,
       SUM(case when fr.data = 'Return' then fr.qty else 0 end) as Returns
from full_report fr
group by fr.store;