我有一个包含字段TYPES,AMOUNT和COMMENT
的表格我想按TYPES字段分组,但如果'TYPES'值为“other”且''COMMENT'不为空,我希望这些记录单独显示。
示例结果:
+-----------+-----------+-----------+
| types | amount | comment |
+-----------+-----------+-----------+
| type1 | 27 | |
| type2 | 65 | |
| type3 | 45 | |
| other | 4 | blabla |
| other | 8 | something |
-------------------------------------
因此,我不想将这两个“其他”记录分组,而是希望这些记录单独显示(但只有当它们也有评论时)
答案 0 :(得分:4)
如果我理解正确,您希望将具有给定类型的所有行组合在一起,除非类型为“其他”并且评论不是NULL
。
近似值是:
select types,
(case when types = 'Other' and comment is not null
then comment end) as comment,
sum(amount) as amount
from table t
group by types,
(case when types = 'Other' and comment is not null
then comment end);
唯一的问题是,带有types = 'Other'
和相同注释的行将组合在一起。要正确解决这个问题,每行需要一个唯一的标识符,而MySQL并不容易提供。
答案 1 :(得分:2)
在您的情况下,我看到两个单独的数据集。尝试使用union all
,如下所示
select types, amount,comment
from tab
where (types = 'other' and comment is not null)
or types <> 'other'
group by types
union all
select types, amount,comment
from tab
where types = 'other'
and comment is null