在 SQL 中,行转列是指将数据表中具有相同 key 值的多行 value 数据,转换为使用一个 key 值的多列数据,使每一行数据中,一个 key 对应多个 value。行转列完成后,在视觉上的效果就是:表中的总行数减少了,但是列数增加了。
行转列可以使用以下方法实现:
CASE WHEN 语句
使用 CASE WHEN 语句可以将数据表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据。具体做法如下:
SELECT
key,
CASE
WHEN key = '语文' THEN value1
WHEN key = '数学' THEN value2
WHEN key = '英语' THEN value3
END AS value
FROM
table;
这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。
PIVOT 运算符
PIVOT 运算符可以将数据表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据。具体做法如下:
SELECT
key,
value
FROM
table
PIVOT(
SUM(value)
FOR key IN ('语文', '数学', '英语')
);
这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。
GROUP BY 和 GROUP_CONCAT 函数
GROUP BY 和 GROUP_CONCAT 函数也可以实现行转列。具体做法如下:
SELECT
key,
GROUP_CONCAT(value) AS value
FROM
table
GROUP BY
key;
这段 SQL 语句将将 table 表中具有相同 key 值的多行 value 数据转换为使用一个 key 值的多列数据,key 列为 key,value 列为 value1、value2、value3。
在实际开发中,可以根据具体的需求选择合适的方法实现行转列。