無聚合函數的 T-SQL PIVOT 操作
與通常需要聚合函數的 PIVOT 運算不同,也可以在無需聚合函數的情況下執行 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 |
要使用無需聚合函數的 PIVOT 來實現此目標,可以使用以下查詢:
<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>
此查詢在 PIVOT 操作中執行 case 語句,以針對給定的 CustomerID 選擇每個 DBColumnName 的最小值。由於每個 CustomerID 和 DBColumnName 組合只有一行數據,因此 MIN 函數傳回所需的值。
以上是如何在沒有聚合函數的情況下執行 T-SQL PIVOT 操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!