1

我被要求在 SQL 数据库的单行上创建一个按多列中的值分组的报告。例如

Employee Name | Type1Column1 | Type1Column2 | Type2Column1 | Type2Column2
John Doe      | 0.00         | 10.00        | 20.00        | 20.00

Report Output

Name          | Type      | Total
John Doe      | Type1     | 10.00
              | Type2     | 40.00

我希望你明白了,不,我没有设计表格,不,我不能改变它,但我可能能够调整产生输出的存储过程......

我玩弄了一些想法,但不知所措;我觉得需要某种经过计算的东西来分组,但我以前从来没有遇到过这个问题,因为我一直自己设计数据仓库和多维数据集。

有谁知道我如何在 SSRS 2008R2 中实现这一目标?

提前致谢。

4

2 回答 2

3

您可以将 UNPIVOT 运算符应用于返回该输出的查询吗?

select
EmployeeName, 
case
    when Type like 'Type1%'
    then 'Type1'
    else 'Type2'
end TypeCol,
Total 
from (select EmployeeName, Type1Column1, Type1Column2, Type2Column1, Type2Column2
     from storedprocdata ) as f
unpivot (Total for Type in (Type1Column1, Type1Column2, Type2Column1, Type2Column2)
) as u

请注意,派生表 f 正在从名为 storedprocdata 的表中获取数据。此外,主 select 语句中的 case 语句允许按您想要的不同类型显式地对您拥有的列进行分组。

然后,您可以对 SSRS 报告中的 Total 列进行汇总。

于 2012-03-06T23:46:20.330 回答
1

unpivot 运算符应该更灵活,但是(扩展 Jamie F 对问题的评论)可以通过设置 5 个详细信息行(每种类型一个)并将 Total 列的表达式设置为如下来实现:

=Fields!Type1Column1.Value+ Fields!Type1Column2.Value+ Fields!Type1Column3.Value+
 Fields!Type1Column4.Value+ Fields!Type1Column5.Value+ Fields!Type1Column6.Value+
 Fields!Type1Column7.Value

- 对于类型 1 详细信息行,每个后续类型详细信息行都有类似的表达式。

于 2012-03-07T12:00:06.090 回答