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中文网其他相关文章!