阅读量:0
在MySQL中将动态行转列可以使用GROUP_CONCAT函数以及动态SQL语句来实现。以下是一个示例代码:
假设有一个表格名为data
,包含以下数据:
id | name | value |
---|---|---|
1 | attribute1 | 10 |
1 | attribute2 | 20 |
2 | attribute1 | 15 |
2 | attribute2 | 25 |
要将这些数据按照id进行行转列,可以使用以下SQL语句:
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(CASE WHEN name = ''', name, ''' THEN value END) AS ', name ) ) INTO @sql FROM data; SET @sql = CONCAT('SELECT id, ', @sql, ' FROM data GROUP BY id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
运行以上代码后,将获得以下结果:
id | attribute1 | attribute2 |
---|---|---|
1 | 10 | 20 |
2 | 15 | 25 |
这样就实现了将动态行转列的功能。