如何解决如何在带有“隐藏重复项”的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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。