首页 > 解决方案 > 错误代码:1064 - 我的 SQL:动态行到列

问题描述

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(case when subject_details.subject_Name = ''',
      subject_details.subject_Name,
      ''' then (marks.internal_Marks+marks.external_Marks) End) AS ',
      REPLACE(subject_details.subject_Name, ' ', '')
    )
  ) INTO @sql
FROM subject_details;

SET @sql = CONCAT('SELECT stud.student_Name,',@sql , 'FROM marks
INNER JOIN student_details AS stud ON stud.pkey = marks.fk_Student_Name
INNER JOIN subject_details ON subject_details.pkey = marks.fk_Subject_Name
INNER JOIN dept_name ON dept_name.pkey = subject_details.fk_Dept_Name
GROUP BY stud.student_Name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

当我运行代码时,我收到此错误:

错误代码:1064
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“FROM 标记 INNER JOIN student_details AS stud ON stud.pkey = mark.fk_Student_Na”附近使用正确的语法

标签: mysqlsqlstored-proceduresstored-functions

解决方案


推荐阅读