在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 |
這樣就實現了將動態行轉列的功能。