1

嗨我需要在SSRS中设置帮助,以正确显示多个父母中的孩子在层次结构报告。SSRS层次结构递归父母 - 子女与多个父母

这就是我所做的。

select * from PCA 

这是PCA表

Parent  Child 
ASSY1  CHILD1  
ASSY1  CHILD2  
CHILD1  ACHILD1 
CHILD1  ACHILLD2 
ACHILD1  BCHILD1 
ACHILD1  BCHILD2 

这是CTE在报表数据集中

WITH tBOM AS(
SELECT Parent,Child, 0 as BOMLevel from PCA A 
WHERE Parent='ASSY1' 
UNION ALL 
SELECT C.Parent, C.Child, BOMLevel+1 from PCA C 
INNER JOIN tBOM on tBOM.Child=C.Parent 
) 
SELECT row_number() over (Order by Parent), * FROM tBOM 

这是SSRS RDL文件中的设置。和我运行它时的报告。 Group by Child,并且我将递归父项设置为父项。我也设置组的可见性,所以我得到加号做下钻和填充。一切看起来不错。

enter image description here

填充左设置像这样:

=20 * Level() & "pt" 

enter image description here

直至:我增加一个排表。

Parent Child 
ASSY1  CHILD1  
ASSY1  CHILD2  
CHILD1  ACHILD1 
CHILD1  ACHILLD2 
ACHILD1  BCHILD1 
ACHILD1  BCHILD2 
**ACHILLD2  BCHILD2** 

我想到的东西下面ACHILLD2 但是,没有:这是我得到

enter image description here

更多了这一点。如果我添加更多行来增加深度,结果会更不正确。例如,如果我添加了一个孩子BCHILD2,

enter image description here

,而是我得到这个: enter image description here

回答

0

阅读文章小时。我得出结论:SSRS不能实现我的最终目标。 伤心我知道。但它是个什么

https://connect.microsoft.com/SQLServer/feedback/details/724449/bug-found-when-using-the-ssrs-recursive-hierarchy-feature-with-multi-parent-relationships

错误当使用SSRS递归层次结构特征与 多亲关系找到 - 通过MichaelLee

状态:关闭由设计到设计

的产品团队 相信这个项目根据其预期的设计工作。

有关此特定项目 的解决方案的更详细说明可能已在评论部分中提供。

说明

在SSRS报告中,您可以通过这篇文章下面创建向下钻取 控制递归层次: http://msdn.microsoft.com/en-us/library/bb630438(v=SQL.100).aspx

然而,似乎这个功能不能正常工作时, 孩子有多个父母。如果一个孩子有两个父母,你会想要一个孩子被安置在每个父母之下。相反,该子项仅放置在SQL表中第一个出现的父项下方 。如果 您将额外的列添加到Tablix并将表达式设置为 '= CountRows(“RowGroupName”,递归)“,您会注意到该子项的总计 记录是2.因此,由于某些原因,两个记录都是即 放置在第一个父母的下方,即使其中一个记录具有 不同的父母。

请注意,在我的情况下,孩子和父母的ID是 uniqueidentifier。

联系方式评论(2)|解决方法(3)|附件(0)签署 要发表评论。发布者易卜拉欣Achkar在2012年4月20日上午6时10分 你好迈克尔,我也发现了这个错误。有关来自Microsoft的 分辨率的任何更新。至于你的解决方法,你是否建议 获取数据并将其设置在一个新的临时表中,采用不同的 (1对1关系)格式。有了新的表格,我们仍然需要使用SSRS中的父分组还是 或者需要其他方法?

您的帮助是非常感谢。

谢谢你,易卜拉欣作者:Riccardo [MSFT]于2/13/2012于5:34 PM 感谢您的反馈。我们正在将此错误解决为By Design ,因为我们将每个组与单个父组关联。我们不要 将一个组与多个父组关联(但可以随意为此功能创建一个建议)。

为了进一步解释预期行为,我们首先根据GroupExpression或此例中的ChildID字段对数据 进行分组。然后我们评估父表达式,在这种情况下,ParentID字段 为每个组。由于我们将每个组与单个父项 组相关联,因此我们需要一个值。当应该返回单个值的表达式指的是具有多个数据行的范围中的字段时,这种情况仅仅是一个示例 - 行为是官方未定义的,但实际上,它倾向于像第一个聚合函数一样行为, 其中第一个数据行在范围内。

里卡尔多穆蒂SQL Server报表服务

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a65bf4a4-e3b6-4c33-aa9e-6f7d7e4b7f5e/bill-of-materials-recursive-parent-report?forum=sqlreportingservices

嗨duanekae,只是为了确认,我从来没有使用 SSRS这个适当的解决方案。我已经结束了使用自定义SQL函数来执行此操作。 我很想让它在SSRS中工作,因为这将是一个更容易的解决方案 。2016年1月13日星期三下午04:04引用阿凡达 Alex Lush - Severn Unival Alex Lush - Severn Unival