Sql SSRS递归父级仅在子级有多个父级时提供不同的子级

Sql SSRS递归父级仅在子级有多个父级时提供不同的子级,sql,recursion,reporting-services,parent-child,distinct,Sql,Recursion,Reporting Services,Parent Child,Distinct,我已经使用递归父功能制作了一个SSRS报告,以显示一个层次化的值树。我遇到的问题是,有些子级有不止一个父级,但因为(为了更好地使用递归父级),我需要按Id对结果进行分组,所以我只看到不同的条目。这意味着我只会看到每个孩子一次,即使它“应该”出现在报告中的多个位置(在每个家长的下面) 下面是一个示例数据集,它显示了我的意思: DECLARE @Bear Table ( ParentId INT NOT NULL ,Id INT NOT NULL ,Name VARCH

我已经使用递归父功能制作了一个SSRS报告,以显示一个层次化的值树。我遇到的问题是,有些子级有不止一个父级,但因为(为了更好地使用递归父级),我需要按Id对结果进行分组,所以我只看到不同的条目。这意味着我只会看到每个孩子一次,即使它“应该”出现在报告中的多个位置(在每个家长的下面)

下面是一个示例数据集,它显示了我的意思:

DECLARE @Bear Table
( ParentId  INT NOT NULL
 ,Id        INT NOT NULL
 ,Name      VARCHAR(255))

INSERT INTO @Bear
SELECT * FROM 
(SELECT 0 AS ParentId,  1 AS Id,    'Daddy Bear' AS Name    UNION
 SELECT 0 AS ParentId,  2 AS Id,    'Mummy Bear' AS Name    UNION
 SELECT 1 AS ParentId,  3 AS Id,    'Baby Bear'  AS Name    UNION
 SELECT 2 AS ParentId,  3 AS Id,    'Baby Bear'  AS Name)           AS FamilyMember
ORDER BY FamilyMember.Id

SELECT * FROM @Bear
我的实际数据包含很多“小熊”,例如一个函数被多个过程使用,或者一个过程被多个报告使用

当我制作报告时,我在Bear.Id上分组,并使用一个递归的Bear.ParentId父项,这给了我类似的结果(在报告表中):

正如你们所看到的,“小熊宝宝”只出现一次(通常情况下,Id是唯一的,这会很有意义)。我希望SSR显示的内容更像这样:

Level 1     Level 2
Daddy Bear
            Baby Bear
Mummy Bear
            Baby Bear
Level 1     Level 2
Daddy Bear
            Baby Bear
            Baby Bear
Mummy Bear
这将让用户更好地了解他们正在查看的实际结构

到目前为止,我已经尝试通过“cstr(Fields!Id.Value)&cstr(Fields!ParentId.Value)”将报告组更改为group,以便重新建立一个唯一的分组,这样就不会将任何记录聚合到不可见状态,但这会丢失子项紧跟在其父项之后出现的顺序,因此我得到如下结果:

Level 1     Level 2
Daddy Bear
            Baby Bear
Mummy Bear
            Baby Bear
Level 1     Level 2
Daddy Bear
            Baby Bear
            Baby Bear
Mummy Bear
我还尝试在查询中添加ROW_NUMBER()(ORDER BY Id,ParentId)作为一个新列,对其进行分组,但SSRS似乎对此有问题。我现在使用的最后一种解决方法是只列出第一个示例中的不同值,但在单击时在每个表行中使用一个操作为每个节点再次运行报告。然而,这远非理想

我也在谷歌上搜索过,没有结果

我不知道该怎么办

任何帮助都将不胜感激-我该怎么办

谢谢你抽出时间


标记

为什么不能准确地添加行号()

为每行生成一个“唯一”id,以便对其进行分组

更新


根据我对你问题的理解,你需要一个。这里有很多关于它们的问题,因此在这个链接和那个链接之间,我鼓励您找出如何生成一个适合您需要的数据集。

在提出这个问题时,答案是“因为我是个傻瓜,有一个INT列作为VARCHAR”,但经过整理后,答案是排序丢失了(根据问题的第三个例子)抱歉,它确实是用我给出的例子来工作的——我将用我的实际数据来检查为什么不存在;在它中必须有别的东西来阻止它。我将发布我的发现。如果你有独特的行,你不需要在你的报表分组按语句中创建一个人工唯一的分组。entID。每个父级只能有一个行号,因此如果在新关卡中添加了Baby bear(为了现实起见重命名为“Young bear”)作为父级,则此级别将只出现在其父级列出的一次以下-同一记录在报告中出现两次,但由于行号被分组,因此它必须是唯一的,导致与示例1相同的明显问题,但处于以下级别。因此,是的,您正试图实现未重复的ro的重复ws.IE如果Baby Bear有一个子元素,并且你想在两个Baby Bear实例下都看到它,那么你的数据集中必须有两行它。SSRS只会将一行放在一个分组中。你找到解决方案了吗?我现在正面临着完全相同的问题。下面关于行号的答案不适用于ofc,因为你知道e id和父id之间的父子关系,如果将id分组替换为行号。。。