【问题标题】:Convert multiple rows into one row with multiple columns in T-SQL在 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;

【问题讨论】:

    标签: sql sql-server tsql pivot


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      相关资源
      最近更新 更多