我环顾四周但找不到答案
我需要一个查询,根据同一字段中的值返回2组值作为字段名称
例子我有一张桌子
NAME,VALUE name1,2 name1,3 name1,4 name2,2 name2,3 name2,4
现在我想在一个组中对值2和3进行计数和分组,在另一个组中对值4进行分组,因此我的结果看起来像这样
NAME,GRP1_COUNT,GRP2_COUNT name1,3,1 name2,1
我没有太多运气就尝试了JOIN和UNION
任何帮助赞赏
最佳答案
MysqL没有pivot函数,因此您必须使用带有CASE表达式的聚合函数来转换数据.对于此类计算,您将使用COUNT或SUM:
select name,sum(case when value in (2,3) then 1 else 0 end) GRP1_COUNT,sum(case when value = 4 then 1 else 0 end) GRP2_COUNT
from yourtable
group by name
COUNT版本:
select name,count(case when value in (2,3) then VALUE end) GRP1_COUNT,count(case when value = 4 then VALUE end) GRP2_COUNT
from yourtable
group by name