【问题标题】:GROUP BY ROLLUP Producing unnecessary rowsGROUP BY ROLLUP 产生不必要的行
【发布时间】:2019-02-05 21:01:16
【问题描述】:
SELECT [Code],
       [Posting Date],
       [Document No_],
       [Description],
       [External Document No_],
       Sum(Amount)
FROM [Table1]
GROUP BY ROLLUP ([Global Dimension 1 Code],
                 [Posting Date],
                 [Document No_],
                 [Description],
                 [External Document No_]);

每当我运行上面的查询时,我想使用 GROUP BY ROLLUP 对左侧的“代码”列进行小计 Sum(Amount),但是它会在下面以类似楼梯的效果复制行。我觉得我错过了一些明显的东西。突出显示的绿色行是我希望 ROLLUP 返回的唯一行。第二张图是想要的结果

【问题讨论】:

  • ROLLUP每个级别“汇总”,而不是在每个级别。这些行实际上是GROUP BY[Code] 上的位置。
  • 那么有没有办法只根据[Code] 列进行小计?

标签: sql sql-server tsql


【解决方案1】:

这里不需要ROLLUP。这将为您提供层次结构每个级别的聚合。你可以使用

GROUP BY GROUPING SETS (([Code], [Posting Date], [Document No_], [Description], [External Document No_]),
                        (Code))

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 2022-06-11
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2021-03-02
相关资源
最近更新 更多