我有一张看起来像这样的桌子。
ID_ACTIVITY ID_CLASS EXEC_VALUE
ACT_III A 450
ACT_I B 550
ACT_II A 750
ACT_III B 550
ACT_II A 650
ACT_I A 750
ACT_I B 750
ACT_III A 950
ACT_III A 150
我想基于此表将报表创建为某种数据透视表。这应该是报告输出
ID_ACTIVITY A_COUNT B_COUNT AB_SUM
ACT_I 1 2 2050
ACT_II 2 NULL 1500
ACT_III 3 1 2100
注意:
A_COUNT
和B_COUNT
基于ID_CLASS
中的值是动态的AB_SUM
基于每个EXEC_VALUE
中每个ID_ACTIVITY
中ID_CLASS
的值我已经使用PHP做到了,但是我想知道是否有可能以MySQL的方式做到这一点,并且生成大约成千上万的数据是否更快?
答案 0 :(得分:1)
您可以进行条件聚合:
select
id_activity,
sum(case when id_class = 'A' then 1 end) a_count,
sum(case when id_class = 'B' then 1 end) b_count,
sum(exec_value) ab_sum
from mytable
group by id_activity