中等
技术面试0 次浏览

在 SQL 中,如何实现行列转换?

数据分析师
SQL行列转换

答题要点

在 SQL 中实现行列转换有多种方法。对于简单的行列转换,可使用 `CASE` 语句结合聚合函数。例如,有一个学生成绩表,包含学生姓名、科目和成绩三列,要将科目作为列,成绩作为值进行行列转换。可以使用如下 SQL 语句: sql SELECT student_name, SUM(CASE WHEN subject = 'Math' THEN score ELSE 0 END) AS Math, SUM(CASE WHEN subject = 'English' THEN score ELSE 0 END) AS English FROM scores GROUP BY student_name; 这种方法适用于列数固定且已知的情况。对于动态的行列转换,在不同数据库中有不同的实现方式。在 MySQL 中,可以使用动态 SQL 来实现;在 SQL Server 中,可以使用 `PIVOT` 和 `UNPIVOT` 关键字。`PIVOT` 用于将行数据转换为列数据,`UNPIVOT` 则相反。例如,使用 `PIVOT` 进行行列转换: sql SELECT * FROM ( SELECT student_name, subject, score FROM scores ) AS SourceTable PIVOT ( SUM(score) FOR subject IN ([Math], [English]) ) AS PivotTable; 不同数据库的语法和性能可能有所差异,需要根据实际情况选择合适的方法。