如何在单行中显示层次结构

时间:2017-02-10 18:00:09

标签: sql qlikview

我有这样的桌子..

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

我需要将其更改为这样的形式,例如

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

如何调用此数据结构/问题?

如何通过Qlikview或Sql进行转换?

谢谢!

3 个答案:

答案 0 :(得分: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        

答案 1 :(得分:0)

您似乎正在尝试格式化分层数据。

请参阅Qlikview website上的此文档。关键是描述如何在LOAD语句之前构建存储层次结构的表。

您需要正确格式化源数据才能成功。

答案 2 :(得分: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);

但这不是很优雅,必须为每个级别的连接重复。我很想找到一个更好的方法来做到这一点。

相关问题