有没有可能在不知道根的情况下将下面这样的分层数据展平?
我正在考虑使用下面的方法首先查找最终的父节点,然后使用递归层次结构cte查找子节点
选择父项,从测试中计数(*)父项=按父对象的子组
但我还是想知道是否可以直接做
输入
parent,child,parent_catg,child_catg
A A FIN FIN
A B FIN FIN
B B FIN FIN
A C FIN FIN
B C FIN FIN
C C FIN FIN
B D FIN FIN
C D FIN FIN
E E OTH OTH
E F OTH OTH
A G FIN FIN
B G FIN FIN
A H FIN FIN
P P FIN FIN
P Q FIN FIN
期望输出
ultimate_parent child_nodes
A B,C,D,G,H
E F
P Q
提前谢谢
1条答案
按热度按时间r8xiu3jd1#
在SQLServer中,使用cte(公共表表达式)基本上就是“如何直接访问它”。我加载了你的数据,并试图建立一个(测试代码如下),但很快就遇到了一些问题与你的数据。。。
拥有“自我识别”行(a,a)(b,b)等会让事情变得更加复杂
就像没有所有的一样(没有(d,d)
也许更相关(我不确定技术术语),但这不是一个传统的层次结构。d是b和c的孩子;b是a的孩子,c是b和a的孩子。因此,“传统”的方法将不适用于遍历层次结构。
我的编码尝试如下,作为解决问题的开始,但鉴于所提供数据的性质,它将不起作用。