组合SQL / QlikView中的表

时间:2009-11-16 08:40:04

标签: sql qlikview

是否可以将2个表与连接或类似构造组合在一起,以便一个组中的所有非匹配字段。有点像这样: 所有具有部门名称的员工都会获得真正的部门,所有没有部门的员工最终都会进入“其他”组。

系: SectionDesc ID
Dep1 500
Dep2 501

员工: 姓名ID
安德斯500
Erik 501
root 0

输出: Anders Dep1
Erik Dep2
root其他

最好的问候安德斯·奥尔梅

1 个答案:

答案 0 :(得分:3)

您正在寻找的是外部联接:

 SELECT e.name, d.name
 FROM employee e 
 LEFT OUTER JOIN departments d ON e.deptid = d.deptid

对于没有部门的每个员工,这会给你一个d.name为NULL。您可以使用以下内容将其更改为“其他”:

CASE WHEN d.name IS NULL THEN 'Other' Else d.name END 

(其他更简单的版本适用于不同的DBMS,但这应该适用于大多数。)

QlikView有点棘手,因为QlikView中的所有连接都是默认的内部连接。在线帮助中有一些关于不同连接的讨论,简短版本是您可以根据读取数据的脚本中的不同连接创建新表。所以你可以在你的脚本中有这样的东西:

Emps: SELECT * FROM EMPLOYEES;
Deps: SELECT * FROM DEPARTMENTS;
/* or however else you get your data into QlikView */

EmpDep:
SELECT Emps.name, Deps.name
FROM EMPS LEFT JOIN Deps

为了使此连接起作用,连接的列名必须在两个表中相同。 (如果需要,可以在加载基表时为连接构造新列。)