将所有查询结果排序为2个类别

时间:2014-04-14 11:39:54

标签: mysql sql

我在MYSQL表中有交易数据。其中一个字段是供应商的名称。然而,在许多记录中,未指定供应商(字面意思是' unex')。

所以数据看起来像:

ID     Date          Supplier            ---
1       1 Nov 2013    Green supplier
2       3 Nov 2013    Red supplier
3      15 Nov 2013    UNSPECIFIED
4       2 Dec 2013    UNSPECIFIED
5       6 Nov 2013    Blue supplier
6      20 Nov 2013    UNSPECIFIED

x 100,000等

我可以使用SUM(IF(date_format(日期,'%b,%Y')=' 2013年11月',1,0)对每个月进行汇总和分组 得到类似的东西 -

                Nov 2013   Dec 2013  
UNSPECIFIED        1        2
Green supplier     1        0
Red supplier       1        0
Blue supplier      0        1     etc

但是我想要一个简化版本,将结果分解为(1)是未知的,(2)其他所有内容。所以结果看起来像 -

                Nov 2013   Dec 2013  
 UNSPECIFIED        1        2
'Not UNSPECIFIED'   2        1     etc

虽然仍然保留每月的总和格式。 我相信这应该很简单,但我不能想到如何。有人可以建议吗?

2 个答案:

答案 0 :(得分:2)

您可以在查询中的group by添加条件逻辑:

select (case when supplier = 'UNSPECIFIED' then 'UNSPECIFIED' else 'SPECIFIED' end),
       . . . 
from . . .
group by (case when supplier = 'UNSPECIFIED' then 'UNSPECIFIED' else 'SPECIFIED' end);

在MySQL中,您实际上不必重复group by

中的逻辑
group by 1

答案 1 :(得分:0)

您可以将case声明用作

case when supplier='UNSPECIFIED' then 'UNSPECIFIED' else 'Not UNSPECIFIED' end column_name