資料旋轉是資料轉換中的常見操作,涉及將資料從垂直佈局重塑為水平佈局。在 SQL 中,這可以使用不同的技術來實現,例如 UNPIVOT 或 PIVOT 函數。然而,MySQL 沒有原生的 PIVOT 函數,因此有必要探索替代方法。
MySQL 中動態旋轉的一種方法是使用聚合函數和 CASE 語句動態建構查詢。此方法涉及根據輸出中所需的維度和值動態建立 SQL 語句。
以下範例示範如何使用準備好的語句實現動態透視:
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when part_type = ''', part_type, ''' then part_id end) AS part_', part_type, '_id' ) ) INTO @sql FROM parts; SET @sql = CONCAT('SELECT product_id, ', @sql, ' FROM parts GROUP BY product_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
在此查詢中,我們根據不同的零件類型(即樞軸的尺寸)動態產生SELECT 語句。我們使用 CASE 語句根據part_type 將part_id 分配給適當的資料透視列。然後使用準備好的語句執行產生的 SQL 語句,以獲得更好的效能。
如果您知道輸出中所需的列數有限,則另一種選擇是使用靜態版本的查詢:
select product_id, max(case when part_type ='A' then part_id end) as Part_A_Id, max(case when part_type ='B' then part_id end) as Part_B_Id from parts group by product_id
透過利用這些技術,您可以在MySQL 中實現動態透視,以有效地重塑資料。
以上是如何在 MySQL 中執行動態資料透視?的詳細內容。更多資訊請關注PHP中文網其他相關文章!