Qlikview加入了不加入所有匹配列名称的连接

时间:2010-03-18 11:49:08

标签: sql 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视图是一个想法,但必须有一个更简单的方法。请指教。

4 个答案:

答案 0 :(得分:5)

卡尔

首先,你真的会更好地使用QlikCommunity来解决这些问题,QlikView用户社区非常支持论坛,你会得到更快的答案,我找到这个的唯一原因是我有一个谷歌警报在QlikView上。

问题:

QlikView会自动在所有匹配字段上创建连接,并且无法阻止它执行此操作,也无法使用不同名称的字段进行连接。因此,答案是在SQL Select语句或LOAD语句中重命名字段,例如:

员工: LOAD ID AS EmpID,Person,DepID,Flags AS Emp_Flags; SQL SELECT ID,Person,DepartmentID作为DepID,Flags FROM .........;

系: LOAD ID AS DepID,Name AS DepartmentName,Flags AS Dep_Flags; SQL SELECT ID,Name,Flags FROM .........;

这应该适合你。

还有一条建议,虽然QlikView会加入多个字段,但最好避免这种情况,所以如果你有一个需要多个字段的连接,那么你应该通过在一起添加字段来专门为QlikView表创建一个键。两个表都创建一个字段。

正如我上面所说,加入QlikCommunity(www.qlikcommunity.com),您将找到更好的服务来解决您的问题。

答案 1 :(得分:1)

有一种方法可以阻止QlikView自动加入具有相似名称的字段。

比如说,如果您的两个表Tab1和Tab 2具有相似的字段名称,无论它们在自己的上下文中有什么不同,您可以使用“noconcatenate”关键字来阻止QlikView自动建立关联。

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

(没试过,但你应该明白了)

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

结果应该是这样的: result

亲切的问候 丹尼尔