📅  最后修改于: 2023-12-03 15:23:19.439000             🧑  作者: Mango
在 SQL Server 中,有时需要将多行数据转换为单行数据,通常使用 PIVOT 和 UNPIVOT 来实现这个目的。
PIVOT 可以将多行数据转换为单行,并且把值垂直展示在一个表格中。通常需要使用聚合函数来计算聚合值。以下是一个示例:
SELECT *
FROM (
SELECT EmployeeId, Month, Sales
FROM SalesTable
) AS Sales
PIVOT (
SUM(Sales)
FOR Month IN (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
) AS PivotTable
上面的 SQL 查询将 SalesTable 中的每个员工的销售收入按月份进行了汇总,最终得到了一个新的表格,每个员工占据一行,每个月的销售收入作为列。
与 PIVOT 相反,UNPIVOT 将单行数据转换为多行。以下是一个示例:
SELECT EmployeeId, Month, Sales
FROM SalesTable
UNPIVOT (
Sales FOR Month IN (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
) AS UnpivotTable
上面的 SQL 查询将 SalesTable 中的每个员工的销售情况分别展开成多行,每一行都表示一个月的销售收入。
以上是在 SQL Server 中将行转换为列的两种方法,根据实际需求选择合适的方法。