在 T-SQL 中将多行转换为具有多列的一行
Posted
技术标签:
【中文标题】在 T-SQL 中将多行转换为具有多列的一行【英文标题】:Convert multiple rows into one row with multiple columns in T-SQL 【发布时间】:2021-12-05 18:34:44 【问题描述】:我知道有一个名为 PIVOT
的命令,这可能是我需要的,但第一次尝试使用它时,似乎无法使用它的语法。
这是我的示例数据:
CREATE TABLE MyTable
(
CompanyName NVARCHAR(20),
Price INT,
Project NVARCHAR(50)
);
INSERT INTO dbo.MyTable (CompanyName, Price, Project)
VALUES ('Dell', 450, 'Cleaning'),
('Dell', 150, 'Vaccuming'),
('Dell', 1200, 'Painting'),
('Dell', 100, 'VendingMachines'),
('Dell', 600, 'Wallpapers'),
('Dell', 820, 'Carpeting')
我希望那些 Project Name
变成列,例如具有 "Cleaning" 、 "Carpeting" 等列,然后每列的值是 Price
。
这是我目前尝试过的,但语法错误:
SELECT *
FROM
(SELECT CompanyName, Price, Project
FROM dbo.MyTable) src
PIVOT
(SUM(Price)
FOR Project IN ('Cleaning', 'Vaccuming', 'Painting', 'VendingMachines', 'Wallpapers', 'Carpeting')
) piv;
【问题讨论】:
【参考方案1】:括号[]
你的列名
示例或dbFiddle
SELECT *
FROM
(
SELECT CompanyName, Price, Project
FROM dbo.MyTable
) src
PIVOT
(
SUM(Price)
FOR Project IN ([Cleaning], [Vaccuming], [Painting], [VendingMachines], [Wallpapers], [Carpeting])
) piv;
【讨论】:
以上是关于在 T-SQL 中将多行转换为具有多列的一行的主要内容,如果未能解决你的问题,请参考以下文章