一、常见场景示例
假设原始表 Sales 结构如下:
CREATE TABLE Sales (
SalesDate date,
Region nvarchar(50),
Product nvarchar(50),
Qty int
);
-- 示例数据
INSERT INTO Sales VALUES
('2025-01-01', 'North', 'A', 10),
('2025-01-01', 'North', 'B', 20),
('2025-01-01', 'South', 'A', 15),
('2025-01-01', 'South', 'B', 5),
('2025-01-02', 'North', 'A', 8),
('2025-01-02', 'South', 'B', 12);
目标:将 Product 的不同值(A、B…)变成列,数值填 SUM(Qty),行按 SalesDate、Region。
二、写法 1:PIVOT(固定列名)
当你 已知列集合(比如只有 A/B/C)时,PIVOT 是最直观的:
SELECT
SalesDate,
Region,
ISNULL([A], 0) AS A,
ISNULL([B], 0) AS B
FROM (
SELECT SalesDate, Region, Product, Qty FROM Sales
) AS src
PIVOT (
(Qty) Product ([A], [B])
) p
SalesDate, Region;


