是否可以将 2 个表与连接或类似结构组合在一起,以便一个组中的所有非匹配字段。像这样的事情:所有具有部门名称的员工都获得了他们的真实部门,而所有没有部门的员工最终都进入了“其他”组。
部门: SectionDesc ID
Dep1 500
Dep2 501
员工:姓名 ID
Anders 500
Erik 501
root 0
输出:Anders Dep1
Erik Dep2
root Other
最好的问候安德斯奥尔梅
您正在寻找的是外部联接:
SELECT e.name, d.name
FROM employee e
LEFT OUTER JOIN departments d ON e.deptid = d.deptid
这将为每个没有部门的员工提供 NULL 的 d.name。您可以使用以下内容将其更改为“其他”:
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
为了使此连接起作用,连接的列名在两个表中必须相同。(如有必要,您可以在加载基表时为连接构造新列。)