这里我有IMPALA SQL任务,有人可以帮我解决吗
有一个包含三列A B和C的表。 值有三种类型:A列中的child; A / C栏中的孩子/父母;和所有者在B列中。
IF值出现在C列中,那么它是A列同一行中其他值的父值,并且它也以膨胀形式(作为子对象)存在于A列中。
子级和父级有多个级别(一个值的子级可以是另一个值的父级)。
所有子项和父项值一起生活在A列中;
所有者仅居住在B列中;
当所有者出现时(在B列中),儿童父链结束。
我需要对现有表进行透视,以显示单独行中的每个链
孩子,父子1,父子2,父子3,所有者。
我试图用LEFT JOINS解决这个问题
SELECT a.A, a.B, a.C, b.A, b.B, b.C, c.A, c.B, c.C
FROM
table1 a
LEFT JOIN
table1 b
ON a.C = b.A
LEFT JOIN
table1 c
ON b.C = c.A
它可以工作,但这是一个糟糕的解决方案,因为我们不知道可以有多少个级别的“亲子”。一些连锁店只有三个父母/孩子 值,其中一些值在拥有者之前有50个“链环”