赞
踩
以下是其中比较常见的几种方法:
SELECT
id,
GROUP_CONCAT(CASE WHEN status = 'A' THEN value ELSE NULL END) AS 'statusA',
GROUP_CONCAT(CASE WHEN status = 'B' THEN value ELSE NULL END) AS 'statusB',
GROUP_CONCAT(CASE WHEN status = 'C' THEN value ELSE NULL END) AS 'statusC'
FROM
your_table
GROUP BY
id;
其中,id表示非透视列,status表示需要转换为列的字段,value表示需要被转换的数据。
SELECT
id,
(SELECT value FROM your_table WHERE id=t.id AND status='A') AS 'statusA',
(SELECT value FROM your_table WHERE id=t.id AND status='B') AS 'statusB',
(SELECT value FROM your_table WHERE id=t.id AND status='C') AS 'statusC'
FROM
(SELECT DISTINCT id FROM your_table) AS t;
其中,id表示非透视列,status表示需要转换为列的字段,value表示需要被转换的数据。
CREATE TEMPORARY TABLE temp_table
SELECT
id,
MAX(CASE WHEN status = 'A' THEN value ELSE NULL END) AS 'statusA',
MAX(CASE WHEN status = 'B' THEN value ELSE NULL END) AS 'statusB',
MAX(CASE WHEN status = 'C' THEN value ELSE NULL END) AS 'statusC'
FROM
your_table
GROUP BY
id;
SELECT * FROM temp_table;
以上语句将行数据转换为列数据,并将结果存储在中间表temp_table中。使用SELECT语句从临时表中读取数据即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。