如何将此mysql表转换为数据透视表?

时间:2019-11-28 07:39:38

标签: mysql sql pivot

我有一张看起来像这样的桌子。

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_COUNTB_COUNT基于ID_CLASS中的值是动态的
  • AB_SUM基于每个EXEC_VALUE中每个ID_ACTIVITYID_CLASS的值

我已经使用PHP做到了,但是我想知道是否有可能以MySQL的方式做到这一点,并且生成大约成千上万的数据是否更快?

1 个答案:

答案 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