Sql 如何使用CTE从下到上展平父子层次结构

Sql 如何使用CTE从下到上展平父子层次结构,sql,sql-server,common-table-expression,hierarchy,Sql,Sql Server,Common Table Expression,Hierarchy,关于堆栈溢出的第一个问题,我有以下问题,我有一个层次结构表,如下所示: Table TEST - [wbe_node_type] [varchar](50) NOT NULL, /* leaf or expanded */ - [wbe_node] [varchar](50) NOT NULL, - [wbe_node_mask] [varchar](50) NOT NULL, - [wbe_description] [varchar](50) NOT NULL, - [wbe_p

关于堆栈溢出的第一个问题,我有以下问题,我有一个层次结构表,如下所示:

Table TEST

 - [wbe_node_type] [varchar](50) NOT NULL,  /* leaf or expanded */
 - [wbe_node] [varchar](50) NOT NULL,
 - [wbe_node_mask] [varchar](50) NOT NULL,
 - [wbe_description] [varchar](50) NOT NULL,
 - [wbe_parent] [varchar](50) NOT NULL,    
 - [wbe_node_niveau] [int] NOT NULL,        /* level of the record in the hierarchy */
wbe_node_type, wbe_node, wbe_node_mask, wbe_omschrijving, wbe_parent, wbe_node_niveau

expanded, AFCARN0, A-FCARN0, Project 1, [NULL]. 0
leaf, AFCARN04010, A-FCARN0.40.10, Description 2, AFCARN040, 2
expanded, AFCARN040, A-FCARN0.40, Realisatie, AFCARN0, 1
数据如下:

Table TEST

 - [wbe_node_type] [varchar](50) NOT NULL,  /* leaf or expanded */
 - [wbe_node] [varchar](50) NOT NULL,
 - [wbe_node_mask] [varchar](50) NOT NULL,
 - [wbe_description] [varchar](50) NOT NULL,
 - [wbe_parent] [varchar](50) NOT NULL,    
 - [wbe_node_niveau] [int] NOT NULL,        /* level of the record in the hierarchy */
wbe_node_type, wbe_node, wbe_node_mask, wbe_omschrijving, wbe_parent, wbe_node_niveau

expanded, AFCARN0, A-FCARN0, Project 1, [NULL]. 0
leaf, AFCARN04010, A-FCARN0.40.10, Description 2, AFCARN040, 2
expanded, AFCARN040, A-FCARN0.40, Realisatie, AFCARN0, 1
wbe_节点_类型为“叶”的行是层次结构中的最低级别,最大深度为8级。我想要的是将层次结构从底层(叶节点)展平到顶层

我的想法是开始查找wbe_node_type='leaf'的所有记录,并查找其上的所有级别。使用临时表很容易做到这一点。但是,我用来查询这些数据的工具不适用于临时表。所以我想用CTE试试


当我在网上寻找示例时,这些示例总是从顶部开始,然后逐步向下。是否可以从底部以最低级别开始填充CTE?

对此不是100%确定,但可能类似于此

  SELECT 
*
 FROM TEST l3 
 Inner JOIN TEST l2 ON l3.wbe_parent = l2.wbe_node
 Inner JOIN TEST l1 ON l2.wbe_parent = l1.wbe_node
 WHERE 
l3.wbe_node = 'AFCARN04010'

似乎有效

我对你的问题不太确定-你能不能用连接编写一些查询,使你的层次结构更扁平?你现在有什么CTE?有什么问题吗?嗨,Richard,谢谢你的评论。我已尝试改进问题描述。wbe_父字段是对wbe_节点字段的引用吗?嗨,罗斯,是的。父记录可以有多个子记录吗?因为父记录可以有多个子记录,所以此查询可以生成多行,而不是请求的单行。好了。更新了答案根据wbe_node_niveau字段可以使用的级别,您可能需要编辑代码和内部联接