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中文網其他相關文章!