使用 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()
聚合每個唯一 amount
和 name
組合的 val
值。 CASE WHEN
語句檢查 val
是 1 還是 2,並相應地分配對應的 amount
。 GROUP BY name
確保每個唯一名稱一行。 結果呢? amountVal1
和 amountVal2
列整齊地表示透視資料。 此方法對於已知的、有限數量的 val
值有效。對於動態數量的值,請考慮使用 PIVOT 或其他更高級的技術。
以上是如何使用 CASE WHEN 透視 SQL 列將行資料轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!