使用使用者定義的欄位名稱轉置SQL 表資料
透視資料或轉置資料涉及轉換表,其中欄位代表屬性和行代表表中的實體數據,其中行代表屬性,列代表實體數據。在使用使用者定義的欄位名稱時,這通常很有用,如提供的範例表中所示。
轉置表的查詢
要轉置給定的表,您可以使用SQL函數和條件語句的組合,如圖下面:
SELECT t.UserId, MAX(CASE WHEN t.FieldName = 'Username' THEN t.FieldValue ELSE NULL END) AS Username, MAX(CASE WHEN t.FieldName = 'Password' THEN t.FieldValue ELSE NULL END) AS Password, MAX(CASE WHEN t.FieldName = 'Email Address' THEN t.FieldValue ELSE NULL END) AS Email FROM t GROUP BY t.UserId
說明
使用預先準備語句的動態查詢
要處理動態欄位名稱列表,您可以利用MySQL 的準備語句(動態SQL)語法:
SET @sql = 'SELECT UserId, '; SELECT GROUP_CONCAT(CONCAT('MAX(CASE WHEN FieldName = ''', FieldName, ''' THEN FieldValue ELSE NULL END) AS ', FieldName)) INTO @sql FROM (SELECT DISTINCT FieldName FROM t); SET @sql = CONCAT(@sql, ' FROM t GROUP BY UserId'); PREPARE stmt FROM @sql; EXECUTE stmt;
此查詢根據表中不同的欄位名稱動態建立SQL 語句,並使用準備好的語句執行它。
以上是如何使用動態產生的使用者定義列名轉置 SQL 表資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!