首頁 > 資料庫 > mysql教程 > 如何透視 MySQL 表:將行轉換為列?

如何透視 MySQL 表:將行轉換為列?

Barbara Streisand
發布: 2025-01-25 11:32:13
原創
498 人瀏覽過

How to Pivot a MySQL Table: Transforming Rows into Columns?

將表格重塑為列格式

挑戰: 以透視表格式檢索 MySQL 表中的數據,將行轉換為列。

問題:

給定一個包含 hostid、itemname 和 itemvalue 欄位的表,請如下所示顯示結果:

hostid A B C
1 10 3 0
2 9 0 40

:

步驟 1:選擇感興趣的欄位

決定將提供 y 值 (hostid) 和 x 值 (itemname) 的欄位。

步驟 2:擴充基礎表

為每個唯一的 x 值建立額外的欄位。

<code class="language-sql">CREATE VIEW history_extended AS
SELECT
    history.*,
    CASE WHEN itemname = "A" THEN itemvalue END AS A,
    CASE WHEN itemname = "B" THEN itemvalue END AS B,
    CASE WHEN itemname = "C" THEN itemvalue END AS C
FROM history;</code>
登入後複製

步驟 3:分組與聚合

按 y 值 (hostid) 分組並聚合擴展表。

<code class="language-sql">CREATE VIEW history_itemvalue_pivot AS
SELECT
    hostid,
    SUM(A) AS A,
    SUM(B) AS B,
    SUM(C) AS C
FROM history_extended
GROUP BY hostid;</code>
登入後複製

步驟 4:美化(可選)

將 NULL 值替換為零,以獲得更清晰的外觀。

<code class="language-sql">CREATE VIEW history_itemvalue_pivot_pretty AS
SELECT 
    hostid, 
    COALESCE(A, 0) AS A, 
    COALESCE(B, 0) AS B, 
    COALESCE(C, 0) AS C 
FROM history_itemvalue_pivot;</code>
登入後複製

注意事項與限制:

  • 擴充列中使用的值和缺失值的預設值可以自訂。
  • 可以根據需要調整聚合函數(例如,max)。
  • 如果使用多列作為 y 值或需要大量透視列,則此解決方案可能不適用。

以上是如何透視 MySQL 表:將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板