在SQL Server中,将列转换为行的方法有多种。以下是一些常用的方法:
- 使用PIVOT操作符:PIVOT操作符可以将行转换为列。它需要一个聚合函数和一个PIVOT列,将此列的唯一值作为新列的列名。例如,以下查询将根据Category列创建一个新的列,并计算每个Category的总销售额:
SELECT * FROM ( SELECT Category, Sales FROM SalesTable ) AS s PIVOT ( SUM(Sales) FOR Category IN ([Category1], [Category2], [Category3]) ) AS p
- 使用CASE语句:使用CASE语句可以根据条件将不同的值转换为不同的列。例如,以下查询将根据Category列创建三个新的列,并将Sales值填充到相应的列中:
SELECT SUM(CASE WHEN Category = 'Category1' THEN Sales ELSE 0 END) AS Category1, SUM(CASE WHEN Category = 'Category2' THEN Sales ELSE 0 END) AS Category2, SUM(CASE WHEN Category = 'Category3' THEN Sales ELSE 0 END) AS Category3 FROM SalesTable
- 使用UNPIVOT操作符:UNPIVOT操作符可以将列转换回行。它需要指定要转换的列,并创建一个新的列来存储原始列名和值。例如,以下查询将Sales1、Sales2和Sales3列转换为Category和Sales列:
SELECT Category, Sales FROM SalesTable UNPIVOT ( Sales FOR Category IN (Sales1, Sales2, Sales3) ) AS u
这些是一些常见的将列转换为行的方法。具体使用哪种方法取决于你的需求和数据结构。