2017-02-10 10 views
0

I've получил таблицу, как это ..Как отображать иерархию в одной строке

Name, fathers_name 
------------------- 
John, 
Marty, John 
Lucy, Marty 

мне нужно изменить его в форму, как это, например,

Name, father_name, grandfather_name 
------------------------------------- 
John 
Lucy, Marty, John 

Как это структура данных/проблема называется?

И как это можно преобразовать через Qlikview или Sql?

Спасибо!

+0

Иерархия? Стол для саморегуляции? –

+0

Отец Люси Марти – GurV

+0

Почему Марти, Джон не в выходе? – GurV

ответ

1

Вы можете использовать самостоятельно присоединяется так:

select a.name, b.name fathersname, c.name grandfathersname 
from your_table a 
left join your_table b on b.name = a.fathers_name 
left join your_table c on c.name = b.fathers_name; 

Это даст вам:

Lucy Marty John 
Marty John  
John   
0

Вы, кажется, пытается форматировать иерархические данные.

См. Этот документ на Qlikview website. Ключ должен описать, как таблица хранения иерархии будет построена до утверждения LOAD.

Для успешной работы вам необходимо правильно отформатировать исходные данные.

0

Редактировать: Иерархическая функция работает и является лучшим решением. Спасибо!

I've пытался использовать упомянутые иерархии, но я не могу заставить его работать правильно, если я получил только две колонки, что касается друг друга больше, чем когда-то ...

Я сделал то, что отправил гурв. В моем случае, решение:

ACTIVITY: 
LOAD ACTIVITY.activity_code, 
    ACTIVITY.activity_mother_code as activity_key1, 
    ACTIVITY.activity_name, 
FROM 
[D:\ACTIVITY.qvd] 
(qvd); 

left join (ACTIVITY) 

LOAD ACTIVITY.activity_code as activity_key1, 
    ACTIVITY.activity_mother_code as activity_key2, 
    ACTIVITY.activity_name as ACTIVITY1.activity_name, 
FROM 
[D:\ACTIVITY.qvd] 
(qvd); 

left join (ACTIVITY) 

LOAD ACTIVITY.activity_code as activity_key2, 
    ACTIVITY.activity_name as ACTIVITY2.activity_name, 
FROM 
[D:\ACTIVITY.qvd] 
(qvd); 

Но это не очень элегантное и должно быть повторено для каждого уровня связи. Я хотел бы найти лучший способ, как это сделать.

0

Father_son: НАГРУЗКИ Имя, Отец ОТ [C: \ Users \ qvs1_svc_va \ Desktop \ Текстовый документ.txt] (.txt, кодовая является 1252, встроенные метки, разделитель '\ т', МСО);

NoConcatenate

Father_GrandFather: нагрузка Отец житель Father_son; left join Напиши имя как Отец, Отец, как Резидент Деда Мороза;

NoConcatenate

Семейство: нагрузки Имя, отец Resident Father_son; левый присоединиться загрузить отец, дедушка GrandFather Father_GrandFather;

таблицы падения Father_son, Father_GrandFather;