IMPALA SQL (поворотная таблица) - PullRequest
0 голосов
/ 27 февраля 2019

Здесь у меня есть задача IMPALA SQL, может кто-нибудь помочь мне решить ее, пожалуйста

Есть таблица с тремя столбцами AB и C. Есть три типа значений: child в столбце A;ребенок / родитель в столбцах A и C;и владелец в столбце B.

Значение IF появляется в столбце C, затем оно является родительским значением для другого значения в той же строке в столбце A, и оно также живет в столбце A Swell (как дочерний элемент).

Существует несколько уровней дочерних и родительских элементов (дочерний элемент для одного значения может быть родительским для другого).

Все дочерние и родительские значения находятся вместе в столбце A;

Владельцы живут только в столбце B;

Дочерняя родительская цепочка заканчивается, когда появляется владелец (в столбце B).

Мне нужно повернуть существующую таблицу так, чтобы раскрыть каждую цепочку вотдельный ряд

Ребенок, родитель-ребенок 1, родитель-ребенок 2, родитель-ребенок 3, владелец.

см. Pic_1

Я пытался решить эту проблему с помощью 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 «кольцевых колец» перед владельцем

...