无需聚合函数的 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中文网其他相关文章!