📜  在 sql server 中将行转换为列 - SQL (1)

📅  最后修改于: 2023-12-03 15:23:19.439000             🧑  作者: Mango

在 SQL Server 中将行转换为列 - SQL

在 SQL Server 中,有时需要将多行数据转换为单行数据,通常使用 PIVOT 和 UNPIVOT 来实现这个目的。

PIVOT

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 中的每个员工的销售收入按月份进行了汇总,最终得到了一个新的表格,每个员工占据一行,每个月的销售收入作为列。

UNPIVOT

与 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 中将行转换为列的两种方法,根据实际需求选择合适的方法。