首頁 >資料庫 >mysql教程 >如何使用 CASE WHEN 透視 SQL 表以避免重複行?

如何使用 CASE WHEN 透視 SQL 表以避免重複行?

Barbara Streisand
Barbara Streisand原創
2025-01-11 15:47:431008瀏覽

How Can I Pivot a SQL Table Using CASE WHEN to Avoid Duplicate Rows?

利用SQL中的CASE WHEN語句進行列透視

SQL中的透視操作是指將資料表中垂直排列的欄位轉換為水平排列的欄位。這通常使用CASE WHEN語句來實現。

假設有一個包含三列的表:姓名(name)、值(val)和金額(amount)。目標是將資料轉換為一個新的表示形式:每一行代表一個姓名,每一列代表val列中的特定值,例如'Val1'和'Val2'。

你已經嘗試使用CASE WHEN語句寫了一個初步查詢,但結果並不完全正確。具體來說,John和Peter的行重複了兩次,其中一行包含與val = 1相關的金額值,另一行則包含與val = 2相關的金額值。

為了解決這個問題,我們可以結合使用SUM()聚合函數和CASE WHEN語句。透過對與每個val值相關的金額進行求和,我們有效地對每個姓名的行進行分組,並將值合併到單一列中。

下面修改後的查詢將產生期望的結果:

<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>

此查詢對每個val值在每個姓名組內進行金額求和,得到如下輸出:

name amountVal1 amountVal2
John 2000 1888
Peter 1999 1854

以上是如何使用 CASE WHEN 透視 SQL 表以避免重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn