您好我需要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文件中的设置。当我运行它时的报告。按孩子分组,我将递归父级设置为父级。我还设置了群组可见性,因此我得到了加号和填充的加号。一切看起来都不错。
左边的填充设置如下:
=20 * Level() & "pt"
UNTIL:我在表格中再添加一行。
Parent Child
ASSY1 CHILD1
ASSY1 CHILD2
CHILD1 ACHILD1
CHILD1 ACHILLD2
ACHILD1 BCHILD1
ACHILD1 BCHILD2
**ACHILLD2 BCHILD2**
我期待ACHILLD2以下的东西 但不是:这就是我得到的
更多信息。如果我添加更多行来增加深度,结果将更加不正确。例如,如果我将一个孩子添加到BCHILD2,
答案 0 :(得分:1)
阅读了几个小时的文章。我得出结论,SSRS无法实现我的最终目标。 伤心我知道。但它就是它
使用SSRS递归层次结构功能时发现错误 多亲关系 - 作者:MichaelLee
状态:按设计设计关闭设计
产品团队 认为此项目按其预期设计运作。
有关此特定项目的解决方案的更详细说明 可能已在评论部分提供。描述
在SSRS报告中,您可以使用向下钻取创建递归层次结构 通过以下文章控制: http://msdn.microsoft.com/en-us/library/bb630438(v=SQL.100).aspx
但是,当a时,此功能似乎无法正常工作 孩子有多个父母。如果孩子有两个父母,你会的 期望孩子被安置在每个父母的下面。相反,孩子是 仅放置在SQL表中首先出现的父级下。如果 您将另一列添加到Tablix并将表达式设置为 ' = CountRows(" RowGroupName",Recursive)',你会注意到总数 孩子的记录是2.所以由于某种原因,两个记录都存在 放在第一个父级下面,即使其中一个记录有一个 不同的parentid。
请注意,在我的情况下,子ID和父ID都属于这种类型 唯一标识符
详情评论(2)|解决方法(3)|附件(0)签名 发表评论。 Ibrahim Achkar于2012年4月20日上午6:10发布 你好Michael,我也发现了这个bug。关于a的任何更新 微软的决议。至于你的解决方法,你建议吗? 获取数据并将其设置在不同的新临时表中 (1对1关系)格式。随着新桌子的到来,我们还在吗? 需要在SSRS中使用父分组还是需要其他方法?
非常感谢您的协助。
谢谢你,Ibrahim发表于Riccardo [MSFT]于2012年2月13日下午5:34 感谢您的反馈意见。我们正在按照设计解决这个问题 因为我们将每个组与一个父组相关联。我们没有 将一个组与多个父组相关联(但随意创建 对此能力的建议。)
为了进一步解释预期的行为,我们首先对数据进行分组 基于GroupExpression或本例中的ChildID字段。然后 我们评估Parent表达式,在本例中是ParentID字段, 对于每个小组。由于我们将每个组与单个父组相关联 组,我们需要一个单一的价值。当一个表达式应该返回一个 单值是指具有多个数据行的范围中的字段 - 这种情况只是一个例子 - 行为是官方未定义的, 但在实践中,它往往表现得像第一个聚合函数, 它占据了范围内的第一个数据行。
Riccardo Muti SQL Server Reporting Services
嗨duanekae,为了确认,我从来没有使用过充分的解决方案 SSRS就此。我最终使用自定义SQL函数来执行此操作。 我很乐意在SSRS中使用它,因为这将是一个很大的问题 更容易解决。星期三,2016年1月13日下午4:04引用阿凡达 Alex Lush - Severn Unival Alex Lush - Severn Unival