1. 行转列的本质与业务场景
行转列(Pivot)是SQL Server中一种常见的数据重塑技术,它能够将行数据转换为列数据。这种转换在实际业务中非常实用,比如销售报表、财务统计、学生成绩单等场景。想象一下,你有一张销售记录表,每行代表某产品在某月的销售额。通过行转列,你可以轻松生成一个报表,将月份作为列标题,产品作为行标题,销售额填充在对应位置。
在SQL Server中实现行转列主要有三种方式:
- 使用PIVOT运算符(SQL Server 2005及以上版本支持)
- 使用CASE WHEN条件表达式
- 使用动态SQL实现灵活的行转列
提示:选择哪种方式取决于你的SQL Server版本和具体需求。PIVOT语法更简洁但不够灵活,CASE WHEN更通用但代码量较大,动态SQL最灵活但复杂度最高。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础PIVOT操作详解
2.1 准备示例数据
我们先创建一个简单的销售数据表作为示例:
sql复制CREATE TABLE SalesData (
ProductID INT,
Month VARCHAR(10),
Amount DECIMAL(10,2)
);
INSERT INTO SalesData VALUES
(1, 'January', 1000.00),
(1, 'February', 1500.00),
(1, 'March', 1200.00),
(2, 'January', 800.00),
(2, 'February', 900.00),
(2, 'March', 1100.00);
2.2 使用PIVOT实现行转列
以下是使用PIVOT运算符将月份转为列的基本语法:
sql复制SELECT ProductID, [January], [February], [March]
FROM
(
SELECT ProductID, Month, Amount
FROM SalesData
) AS SourceTable
PIVOT
(
SUM(Amount)
FOR Month IN ([January], [February], [March])
) AS PivotTable;
执行结果将显示每
