2012-02-26 85 views
3

嗨我试图以水平方式显示COUNT结果,但没有成功。有没有什么方法可以做到这一点?如何水平显示MYSQL COUNT

我有这样的表(在Excel中用于演示目的创建)

enter image description here

现在我要显示这样的结果。

enter image description here

任何建议将不胜感激。

回答

5
SELECT store_name, 
     SUM(CASE WHEN status = 'hold' THEN 1 ELSE 0 END) AS hold_count, 
     SUM(CASE WHEN status = 'ship' THEN 1 ELSE 0 END) AS ship_count, 
     SUM(CASE WHEN status = 'return' THEN 1 ELSE 0 END) AS return_count 
FROM table 
group by store_name 
+0

啊是的,着名的CASE方法。 +1 :) – Bojangles 2012-02-26 10:36:19

+0

非常感谢你..我继续探索计数,但事实证明,我需要SUM。完美的作品! – genpet 2012-02-26 10:49:52

+0

@genpet:'COUNT()'也可以。只需将(例如第一行)替换为:'COUNT(CASE WHEN status ='hold'THEN 1 END)AS hold_count' – 2012-02-29 16:56:33

2

在求和总和中使用if子句。

select store_name, 
    sum(if(status='hold', 1, 0)) as 'hold', 
    sum(if(status='ship', 1, 0)) as 'ship', 
    sum(if(status='return', 1, 0)) as 'return' 
from mytable 
group by store_name; 
+0

也适用,太棒了!谢谢! – genpet 2012-02-26 11:06:04