首頁 > 資料庫 > mysql教程 > 如何使用 CASE WHEN 透視 SQL 列將行資料轉換為列?

如何使用 CASE WHEN 透視 SQL 列將行資料轉換為列?

Mary-Kate Olsen
發布: 2025-01-11 16:02:46
原創
842 人瀏覽過

How to Pivot a SQL Column Using CASE WHEN to Transform Row Data into Columns?

使用 CASE WHEN 進行 SQL 欄位透視

需要將 SQL 資料從行轉換為列? CASE WHEN 語句提供了一個簡單的資料透視解決方案,特別是在處理需要聚合的欄位中包含重複值的表格時。

讓我們用一個例子來說明。 想像一下這張桌子:

<code class="language-sql">Bank:
name  val   amount
John   1     2000
Peter  1     1999
Peter  2     1854
John   2     1888</code>
登入後複製

我們的目標:將其重組為一個表,其中唯一的「val」值成為列,每個唯一的「name」是一行。所需的輸出:

<code class="language-sql">name  amountVal1 amountVal2  
John    2000        1888   
Peter   1999        1854    </code>
登入後複製

以下是如何使用 SUM()CASE WHEN 實現此樞軸:

<code class="language-sql">SELECT 
  name,
  SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1,
  SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2
FROM bank
GROUP BY name;</code>
登入後複製

此查詢使用 SUM() 聚合每個唯一 amountname 組合的 val 值。 CASE WHEN 語句檢查 val 是 1 還是 2,並相應地分配對應的 amountGROUP BY name 確保每個唯一名稱一行。 結果呢? amountVal1amountVal2 列整齊地表示透視資料。 此方法對於已知的、有限數量的 val 值有效。對於動態數量的值,請考慮使用 PIVOT 或其他更高級的技術。

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

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