Ако погледнете кода си (и увеличите):
SET @sql = CONCAT('SELECT id_c, students,', @sql, '
[..]
CONCAT(B.`code`, '_', A.id_a) col,
CONCAT(D.value_m, ',', D.value_n) val
[..]
GROUP BY id_c'
);
ще видите, че _
и ,
са черни, докато трябва да са червени като част от низа. Това означава, че вашият низ е "счупен" там. Така че трябва да избегнете единичните кавички с ''
:
SET @sql = CONCAT('SELECT id_c, students,', @sql, '
[..]
CONCAT(B.`code`, ''_'', A.id_a) col,
CONCAT(D.value_m, '','', D.value_n) val
[..]
GROUP BY id_c'
);
Или използвайте двойни кавички за низове, които съдържат единични кавички:
SET @sql = CONCAT('SELECT id_c, students,', @sql, "
[..]
CONCAT(B.`code`, '_', A.id_a) col,
CONCAT(D.value_m, ',', D.value_n) val
[..]
GROUP BY id_c"
);
Сега целият низ е червен, както трябва да бъде :-)
http://rextester.com/SLMU41976