在 SQL 中,行转列是一种将数据从行的形式转换为列的形式的操作。以下是在 SQL Server(MSSQL)中行转列的一个例子:
假设有一个名为 SalesData 的表,包含以下数据:
| Year | Quarter | SalesAmount |
|---|---|---|
| 2023 | Q1 | 1000 |
| 2023 | Q2 | 1200 |
| 2023 | Q3 | 1500 |
| 2023 | Q4 | 1800 |
| 2024 | Q1 | 2000 |
| 2024 | Q2 | 2200 |
现在想要将数据转换为以下形式:
| Year | Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|---|
| 2023 | 1000 | 1200 | 1500 | 1800 |
| 2024 | 2000 | 2200 | NULL | NULL |
可以使用 PIVOT 函数来实现行转列:
SELECT Year, [Q1], [Q2], [Q3], [Q4]
FROM SalesData
PIVOT (
SUM(SalesAmount)
FOR Quarter IN ([Q1], [Q2], [Q3], [Q4])
) AS PivotTable;
在这个例子中,PIVOT 函数将 SalesAmount 列的值按照 Quarter 列的值进行聚合,并将结果转换为列。SUM(SalesAmount) 指定了聚合函数为求和,FOR Quarter IN ([Q1], [Q2], [Q3], [Q4]) 指定了要转换的列值。
行转列在数据分析和报表生成中非常有用,可以使数据更易于阅读和理解。但需要注意的是,使用 PIVOT 函数时,需要明确指定要转换的列值,如果列值是动态的,可能需要使用动态 SQL 来实现。

被折叠的 条评论
为什么被折叠?



