Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何像这样透视和计算MySQL表?_Mysql_Pivot - Fatal编程技术网

如何像这样透视和计算MySQL表?

如何像这样透视和计算MySQL表?,mysql,pivot,Mysql,Pivot,我有下表。我怎样才能将其旋转并计算每个问题的回答?第二张表是我想要的结果 尝试此操作,您应该将@table替换为您的表名 select 'Q1' as Question, sum(if(Q1='yes', num, 0)) as 'yes', sum(if(Q1='no', num, 0)) as 'no', sum(if(Q1='could be', num, 0)) as 'could be' from (select Q1, count(Q1) as nu

我有下表。我怎样才能将其旋转并计算每个问题的回答?第二张表是我想要的结果


尝试此操作,您应该将@table替换为您的表名

select 
    'Q1' as Question,
    sum(if(Q1='yes', num, 0)) as 'yes',
    sum(if(Q1='no', num, 0)) as 'no',
    sum(if(Q1='could be', num, 0)) as 'could be'
from (select Q1, count(Q1) as num from @table group by Q1) Q1
union
select 
    'Q2' as Question,
    sum(if(Q2='yes', num, 0)) as 'yes',
    sum(if(Q2='no', num, 0)) as 'no',
    sum(if(Q2='could be', num, 0)) as 'could be'
from (select Q2, count(Q2) as num from @table group by Q2) Q2
union
select 
    'Q3' as Question,
    sum(if(Q3='yes', num, 0)) as 'yes',
    sum(if(Q3='no', num, 0)) as 'no',
    sum(if(Q3='could be', num, 0)) as 'could be'
from (select Q3, count(Q3) as num from @table group by Q3) Q3
union
select 
    'Q4' as Question,
    sum(if(Q4='yes', num, 0)) as 'yes',
    sum(if(Q4='no', num, 0)) as 'no',
    sum(if(Q4='could be', num, 0)) as 'could be'
from (select Q4, count(Q4) as num from @table group by Q4) Q4