【问题标题】:Complicated pivot in MS SQL ServerMS SQL Server 中的复杂数据透视
【发布时间】:2015-04-22 17:45:56
【问题描述】:

我有以下数据结构,其中 value1 和 value2 - 每个段和日期的一些聚合值(如果有帮助,我可以获得未聚合的数据)

date segment value1   value2
---  ------  -------  ------

我需要一份报告,如下所示:

            2015-01-01     2015-01-02   
         value1  value2  value1  value2
         ------  ------  ------  ------
segment1    19    5       18       7
segment2    20    5       21       7 

对于给定时间段内的每个日期同时进行。我该怎么做?

【问题讨论】:

  • 没有人能为您找到解决方案,除非您回应我们的要求。请把问题说清楚。 @Trius
  • 您没有提供实际输入,并且您的输出不是 SQL 结果集(那些日子标题在那里做什么)?看起来您正在尝试生成一个包含可变数量列的表——这在 SQL 查询中是不可能的,除非您使用动态 SQL。你真的需要用 SQL 来做吗?这是 Excel 数据透视表可以不费吹灰之力做的事情——SQL,不是那么多。
  • 你是对的。 OP 没有给出实际的源表,而且还不清楚。他甚至没有回应/回答我们的要求。 @Jeroen Mostert

标签: sql sql-server-2008 pivot


【解决方案1】:

如果我理解了这个问题,您希望该段后跟值 1 和值 2 列的总和,如果所以这里是一个简单的组:

select segment
    , sum(Value1) as Value1
    , sum(value2) as Value2
From YourTable
group by segment

【讨论】:

  • 不,我需要查看从日期到现在的值是如何变化的。
  • 以您要求的分层格式呈现它是不切实际的,具有动态列数。您可以根据通过动态 SQL 选择的参数拥有动态列数,但这可能不值得当您可以将其放入 excel 并在几秒钟内将其旋转时,它就会出现。但是,如果您只是为了提高自己的技能而这样做,Pinal Dave 有一篇关于这个主题的优秀文章:Link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多