2010-03-18 38 views
1

我是Qlikview的新手,正在寻找有关脚本的一些答案。我如何创建刚刚加入特定列的Qlikview连接(而不是所有具有匹配名称的连接)?比方说,我有如下表:Qlikview加入不会加入所有匹配的列名称

员工

Id  | Person | DepartmentID | Flags 
1000 , Bob  ,  2001   ,  1000000 
1001 , Sue  ,  2002   ,  1100000 

Id | Name | Flags 
2001 , HR  , 01101111 
2001 , R&D  , 1100000 

关于什么是DepartmentID的<连接这些表的最佳途径 - > ID字段?数据由SQL选择提供。我想用独特的名字编写SQL视图是一个想法,但必须有一个更简单的方法。请指教。

回答

5

卡尔

首先,你真的会好起来使用QlikCommunity针对这些问题,该论坛由QlikView的用户群体很好的支持,你会更快地得到答案,我发现的唯一原因,这是我在QlikView上有谷歌提醒。

你的问题:

的QlikView会自动创建在所有匹配字段联接并没有办法阻止它这样做,也没有办法让它加入使用不同的名称领域。因此,答案是在SQL Select语句或LOAD语句中重命名您的字段,例如:

雇员: LOAD ID AS EmpID,Person,DepID,Flags AS Emp_Flags; SQL SELECT ID,Person,DepartmentID as DepID,标志FROM .........; LOAD ID AS DepID,名称AS DepartmentName,标志AS Dep_Flags;名称AS DepartmentName,标志AS Dep_Flags;名称AS DepartmentName,标志AS Dep_Flags; SQL SELECT ID,名称,标志FROM .........;

这应该对你有用。

还有一条建议,尽管QlikView会加入多个字段,但最好避免这种情况,所以如果您确实有一个需要多个字段的联接,那么您应该通过添加字段来专门为QlikView表创建一个键在这两个表中创建一个单独的字段。

正如我上面所说,加入QlikCommunity(www.qlikcommunity.com),你会发现一个更好的服务为您的问题。

1

有一种方法可以防止QlikView自动加入具有相似名称的字段。假设您的两个表Tab1和Tab2具有相似的字段名称,但是在它们自己的上下文中有所不同,则可以使用“noconcatenate”关键字来防止QlikView自动进行关联。

0

您可以编辑的QlikView(CTRL + E)负载脚本,并使用这样的事情:

Work: 
LOAD 
    EmployeeId, 
    EmployeePerson, 
    DepatmentId, 
    EmployeeFlags, 
    DepartmentName, 
    DepartmentFlags 

SELECT Employee.Id as EmployeeId, Employee.Person as EmployeePerson, Employee.DepartmentID as DepatmentId, Employee.Flags as EmployeeFlags, Department.Name as DepartmentName, Department.Flags as DepartmentFlags 
FROM Employee, Department 
WHERE Employee.DepartmentID = Department.Id 

(没有尝试,但你应该明白我的意思)

0

这应该工作

employee: 
LOAD * INLINE [ 
    ID, Person, DepartmentID, Flags 
    1000, Bob, 2001, 1000000 
    1001, Sue, 2002, 1100000 
]; 

department: 
LOAD * INLINE [ 
    ID, Name, Flags 
    2001, HR, 01101111 
    2002, R&D, 1100000 
]; 

left join (employee) 
LOAD ID AS DepartmentID, 
    Name, 
    Flags AS Department_Flags 
Resident department 
; 

DROP Table department; 

结果768,16这个样子: result

亲切的问候 丹尼尔