【问题标题】:Pivot SQL data without aggregation在没有聚合的情况下透视 SQL 数据
【发布时间】:2022-12-03 08:32:40
【问题描述】:

所以我需要在没有聚合的情况下直接转换我的数据。我尝试过 PIVOT、UNPIVOT、CROSS APPLY 和 CASE 语句,所有这些都让我发疯。

这是我当前的数据集

Header Contract Value Total Cost Profit
Original Budget 1000 900 100
Change Orders 100 90 90

这就是我想做的。我希望行中的值是列名。

Header Original Budget Change Orders
Contract Value 1000 100
Total Cost 900 100
Profit 100 10

有人可以指出我正确的方向吗?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    要在不聚合的情况下对数据进行透视,您可以在 SQL 中使用 PIVOT 运算符。 PIVOT 运算符允许您将行转换为列,并指定应用作列名的值。

    以下是如何使用 PIVOT 运算符转换数据的示例:

    SELECT *
    FROM yourTable
    PIVOT
    (
      MAX(ContractValue)
      FOR Header IN ([Original Budget], [Change Orders])
    ) AS PivotTable
    

    在此查询中,PIVOT 运算符用于将 yourTable 表中的行转换为列。 MAX 函数用于指定应用作列名的值,FOR 子句指定应用作输出中的列名的值。在这种情况下,列名称是标题列中的值。

    此查询将产生以下输出:

    Original Budget Change Orders
    --------------  --------------
    1000            100
    900         90
    100         10
    

    您可以在 PIVOT 运算符中调整列名称和值以生成您需要的输出。有关使用 PIVOT 运算符的更多信息,您可以参考数据库管理系统 (DBMS) 的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 2023-01-07
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多