如何在带有“隐藏重复项”的SSRS报表上使用SUM(聚合函数)?

| 我有一个SSRS网格报表,其中标题行为ѭ0的选择子行。 在SQL查询中,一个Shift表内部连接到许多Parts表,这意味着Shift表上的Hours字段对于每个零件重复。我使用“小时”单元格上的“隐藏重复项” SSRS功能来直观地解决此问题。问题在于,尽管隐藏了重复项,但“ 0”函数(在报表中,而不是在查询中)仍将其包括在小时总数中。 因此,我可能具有以下表和标题。隐藏了小时数(和班次)重复项,但仍然(不希望地)包含在求和中。
SHIFT   HOURS     PART   ON HAND
=====   =======   ====   =======
        SUM:  8          SUM: 90
=====   =======   ====   =======
1st           3   X12Z        20
                  J23Z        10
2nd           1   Y36P        30
3rd           1   Q90F        30
我正在简化实际报告,因此无法以其他方式显示数据。另外,这些已经在一个组中,因此我不确定是否可以添加另一个组。如何获得
SUM()
函数以返回显示的小时数总和? 编辑: 我已经对我自己的问题发布了详尽的答案,但是如果有更好的方法可以解决此问题,或者我的答案可以得到改善,请随时提出您的评论。如果仍然有可以大大改善我的方法的答案,我将接受它们。     
已邀请:
        使用存储过程。在开始将结果放入临时表#X时继续。在结果上打开光标,然后在各行中移动。只要您的标识列没有变化,将小时设置为空。然后返回结果,您的报告应该可以正常工作。     
        考虑到报告中这种格式的普遍性,我希望有更多答案,或者至少是一种更好的方法。但是,a,我的方法如下: 而不是实现
cursor
并遍历表,而是对存储过程中的原始结果运行
update
。它将清除重复字段的值(即班次,小时),其中当前行的部分不是为此班次返回的第一行的部分。如果原始查询中有
order by
,请将其包含在嵌套的
select
中:
update @tempResults
set    shift = null, -- Shift is a duplicated field.
       hours = null, -- Hours is a duplicated field.
where  part <> -- The part number identifies the duplicates.
       (
           select top 1 part
           from  #tempresults t
           where #tempresults.shift = t.shift -- Parts were grouped by shift.
           -- order by    the same fields from the original select statement.
       )
本质上,公式是: 消除\“ parent \”表中的字段(1:m关系中的1)。 使用\“ child \”表的标识字段设置
update
where
。 使用父表的标识字段设置
select
where
。     

要回复问题请先登录注册