自嵌套SQL连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自嵌套SQL连接相关的知识,希望对你有一定的参考价值。

我需要这个结果这个表。这是3列,我希望嵌套节点有3个结果。我真的希望每个节点都有自己和父类似的结果

ID/ Number/SelfRef
21092   100 NULL
21093   50  NULL
21094   30  21093
21095   20  21093
21096   -30 21093
21097   5   21095
21098   15  21095
21099   -5  21095

我需要这个结果

21097    5     21097
21097    5     21095 
21097    5     21093

这是我的逻辑

答案

这对我有用

;WITH
    cte1 AS
    (   -- Recursively build the relationship tree
        SELECT      SelfRef
                ,   ID
                ,   AscendentLevel = 1
        FROM        [Kharid].[IdentityGharardadKalaTedad]
        UNION ALL
        SELECT      t.SelfRef
                ,   cte1.ID
                ,   AscendentLevel = cte1.AscendentLevel + 1
        FROM        cte1
        INNER JOIN  [Kharid].[IdentityGharardadKalaTedad]    t   ON t.ID = cte1.SelfRef
    ),
    cte2 AS
    (   -- Now find the ultimate parent
        SELECT      SelfRef
                ,   ID
                ,   rn = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY AscendentLevel DESC)
        FROM        cte1
    )

SELECT  *
FROM    cte2
Order by id

以上是关于自嵌套SQL连接的主要内容,如果未能解决你的问题,请参考以下文章

oracle 嵌套查询 子查询 自连接 等值连接条件

SQL 嵌套连接显示每个产品的当前价格并使用 MAX()

使用嵌套片段和动画对象

将片段添加到片段中(嵌套片段)

Android 动画嵌套片段

sql嵌套删除语句