使用动态MYSQL PIVOT将多行数据转换为单行多列
这个问题与一直在搜索的问题不同,它在创建透视表之前从多个列中进行选择 我有一个与此类似的表结构使用动态MYSQL PIVOT将多行数据转换为单行多列,mysql,Mysql,这个问题与一直在搜索的问题不同,它在创建透视表之前从多个列中进行选择 我有一个与此类似的表结构 CREATE TABLE score ( id int, reg_id varchar(5), test1 int(5), exam int(5), subject int(5), term VARCHAR(5) ) CREATE TABLE subject ( id int, subject_name varchar(5) ) 我希望能够选择多个值,例如test1和ex
CREATE TABLE score (
id int,
reg_id varchar(5),
test1 int(5),
exam int(5),
subject int(5),
term VARCHAR(5)
)
CREATE TABLE subject (
id int,
subject_name varchar(5)
)
我希望能够选择多个值,例如test1和examin到动态MYSQL数据透视表中的不同列中
我见过类似的例子,但他们似乎只在动态数据透视表中选择了1个匹配值。我试过写这样的东西
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'SUM(case when subject = ''',
subject,
''' then test1 end)AS `',
(select subject_name from subject where id=subject), '`',
'SUM(case when subject = ''',
subject,
''' then exam end)AS `',
(select subject_name from subject where id=subject), '`'
)
) INTO @sql
FROM
scores;
SET @sql = CONCAT('SELECT reg_id, ', @sql, '
FROM scores where term="First term"
GROUP BY reg_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
但它不起作用,谢谢
我希望在转换后得到类似的输出
regid-------maths test----maths exam-----english test------english exam
3m --------- 10 ----- 23 ---- 12 ------- 59
请您将样本数据添加为文本,并添加主题表定义和样本。请将样本数据添加为文本,并添加主题表定义和样本。