首页 > 解决方案 > 如何将百分比计算为新行?

问题描述

我正在使用 SQL Server 2012,我正在尝试使用 PARTITION 计算目标值的百分比,但我不断收到汇总错误。百分比需要是数据集中的新行,附加到每个组的末尾

样本

标签: sqlsql-serversql-server-2012

解决方案


你可以做你想做的事,尽管我怀疑它的用处:

select group, item, jan, feb
from ((select group, item, jan * 1.0 as jan, feb * 1.0 as feb
       from t
      ) union all
      (select group, 'Percent',
              sum(case when item = 'Target' then jan end) * 1.0 / sum(case when item = 'Target' then jan end),
              sum(case when item = 'Target' then feb end) * 1.0 / sum(case when item = 'Target' then feb end)
       from t
       group by group
      )
     ) g
order by group, charindex(item, 'Target,Actual,Percent');

group是一个保留字,所以它是一个非常糟糕的列名称。我没有费心去逃避这个名字,因为我认为这只是分散了查询逻辑的注意力。


推荐阅读