首頁 >資料庫 >mysql教程 >如何在不使用聚合函數的情況下透視 T-SQL 表?

如何在不使用聚合函數的情況下透視 T-SQL 表?

Susan Sarandon
Susan Sarandon原創
2025-01-20 09:57:09859瀏覽

How to Pivot a T-SQL Table Without Using Aggregate Functions?

T-SQL 資料透視:無需聚合函數

在某些情況下,您可能需要將表中的資料轉換為透視格式,而無需使用 SUM 或 COUNT 等聚合函數。本範例展示了一種使用 PIVOT 運算子的獨特方法,適用於不需要聚合函數的情況。

假設有一個包含客戶資訊的來源表:

CustomerID DBColumnName Data
1 FirstName Joe
1 MiddleName S
1 LastName Smith
1 Date 12/12/2009
2 FirstName Sam
2 MiddleName S
2 LastName Freddrick
2 Date 1/12/2009
3 FirstName Jaime
3 MiddleName S
3 LastName Carol
3 Date 12/1/2009

目標輸出是一個透視表,將客戶資訊顯示在單獨的欄位中:

CustomerID FirstName MiddleName LastName Date
1 Joe S Smith 12/12/2009
2 Sam S Freddrick 1/12/2009
3 Jaime S Carol 12/1/2009

為了在不使用聚合函數的情況下實現此目標,可以使用以下 T-SQL 查詢:

<code class="language-sql">SELECT CustomerID,
       MIN(CASE DBColumnName WHEN 'FirstName' THEN Data END) AS FirstName,
       MIN(CASE DBColumnName WHEN 'MiddleName' THEN Data END) AS MiddleName,
       MIN(CASE DBColumnName WHEN 'LastName' THEN Data END) AS LastName,
       MIN(CASE DBColumnName WHEN 'Date' THEN Data END) AS Date
  FROM table
 GROUP BY CustomerId;</code>

此查詢在 CASE 語句中使用 MIN 函數,根據 DBColumnName 為每一列選擇最小值。 “GROUP BY”子句用於按 CustomerID 分組結果。

雖然與使用聚合函數相比,這種方法可能顯得笨拙且效率低下,但在聚合函數不適用(例如處理唯一值或不同值時)的某些情況下,它可以提供更大的靈活性。務必評估查詢的特定需求,並為給定情況選擇最合適的方法。

以上是如何在不使用聚合函數的情況下透視 T-SQL 表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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