【问题标题】:Creating a Pivot Table in SQL在 SQL 中创建数据透视表
【发布时间】:2020-08-18 09:18:33
【问题描述】:

我可以在创建 PIVOT 表时使用一些帮助。

我要从中透视的表是:

Track Number   Customer Number  Ship Date       Op Code     Curr      Surcharge Reason          Surcharge Amt
1100411007     326740721        2019-08-27      Ground      USD       Ground Fuel Surcharge     0.55
1100411007     126270721        2019-12-11      Ground      USD       Air Fuel Surcharge        0.45
1150481637     126170723        2019-01-19      Ground      USD       Residential Delivery      0.55
1150354456     125770746        2019-03-19      Ground      USD       Ext. Residential Del.     0.57
1150394131     126720765        2019-09-27      Ground      USD       Out of Area Delivery      0.50
1600746152     121770100        2019-03-12      Ground      USD       Ground Fuel Surcharge     0.52

我想把它改成格式的地方

Track Number    Surcharge Reason #1         Surcharge Reason #2         Surcharge Reason #3        Surcharge reason #N 
Tracking #1     Surcharge Amt (if any)      Surcharge Amt (if any)      Surcharge Amt (if any)     ...
Tracking #2     Surcharge Amt (if any)      Surcharge Amt (if any)      Surcharge Amt (if any)     ...
Tracking #3     ...                         ...                         ...                        ...
Tracking #4     ...                         ...                         ...                        ...
Tracking #5     ...                         ...                         ...                        ...
...

将跟踪号作为行标识符,添加的列是“附加费原因”列中的唯一值,数据的值是附加费金额(如果有该跟踪号和附加费原因)

非常感谢任何帮助我走上正确道路的帮助。

【问题讨论】:

  • 很高兴看到您到目前为止所做的尝试。

标签: sql sql-server tsql pivot pivot-table


【解决方案1】:

您可以使用case 语句实现您的预​​期输出。这是一个例子。

select
    trackNumber,
    sum(case when surchargeReason = 'Ground Fuel Surcharge' then amount else 0 end) as "Ground Fuel Surcharge"
from youTable
group by
    trackNumber

【讨论】:

  • case 是一个表达式而不是一个语句 :)
  • @DaleK 当我使用case expression 时,我得到一个反馈,casestatement 而不是表达式。 :) 然后我看了这里w3schools.com/sql/sql_case.asp
  • 这取决于您的 RDBMS,但正如我一直告诉 OP 的那样,official docs 应该是您的第一个呼叫端口 :) 对于 SQL Server,它是一个表达式而不是一个语句。
  • @zealous 这出人意料地比我一直在尝试的简单得多,也比我想象的要简单。我刚刚尝试了您使用一系列案例语句的示例,它完全按照我的意愿工作!非常感谢帮助:)
猜你喜欢
  • 2022-01-03
  • 2021-01-19
  • 2012-12-28
  • 1970-01-01
  • 2012-07-20
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多