2017-02-10 20 views
0

從來就表了這樣的顯示層次..如何在單行

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

編輯:層次功能的作品,是最好的解決方案。謝謝!

從來就試圖用提到的層次,但我不能讓它正常工作,如果我有隻是兩列,涉及到超過一次對方更多...

我做了什麼GurV公佈。在我的情況下,解決方案是:

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: LOAD名稱, 父 FROM [C:\用戶\ qvs1_svc_va \桌面\新建文本文檔] (TXT,代碼頁是1252,嵌入式標籤,分隔符是 '\ t' 的MSQ );

NoConcatenate

Father_GrandFather: 負載父駐地Father_son; 左加入 加載名稱爲父親,父親爲祖父居民Father_son;

NoConcatenate

家庭: 負荷名稱,父居民Father_son; 左加入 加載父親,祖父居民Father_GrandFather;

drop tables Father_son,Father_GrandFather;