在 SQL/QlikView 中组合表
是否可以使用联接或类似结构组合 2 个表,以便将所有不匹配的字段合并到一组中。像这样的事情: 所有具有部门名称的员工都会获得其真正的部门,而所有没有部门的员工最终都会进入“其他”组。
部门: 部分描述 ID
出发 1 500
Dep2 501
员工: 姓名 ID
安德斯 500
埃里克501
根 0
输出: 安德斯第一部
埃里克·德普2
root 其他
最好的问候安德斯·奥尔姆
Is it possible to combine 2 tables with a join or similar construct so that all non matching field in one group. Some thing like this:
All employees with a department name gets their real department and all with no department ends up in group "Other".
Department:
SectionDesc ID
Dep1 500
Dep2 501
Employee:
Name ID
Anders 500
Erik 501
root 0
Output:
Anders Dep1
Erik Dep2
root Other
Best Regards Anders Olme
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在寻找的是一个外连接:
这将为您提供一个没有部门的每个员工的 d.name NULL。您可以将其更改为“其他”,如下所示:(
存在针对不同 DBMS 的其他更简单的版本,但这应该适用于大多数。)
QlikView 有点棘手,因为默认情况下 QlikView 中的所有联接都是内部联接。在线帮助中有一些关于不同联接的讨论,简短的版本是您可以根据读取数据的脚本中的不同联接创建一个新表。因此,您的脚本中可以有这样的内容:
为了使此连接正常工作,两个表中连接的列名称必须相同。 (如有必要,您可以在加载基表时为连接构造新列。)
What you are looking for is an outer join:
This would give you a d.name of NULL for every employee without a department. You can change this to 'Other' with something like this:
(Other, simpler versions for different DBMSs exist, but this should work for most.)
QlikView is a bit tricky, as all joins in QlikView are inner joins by default. There is some discussion in the online help about the different joins, short version is that you can create a new table based on different joins in the script that reads in your data. So you could have something like this in your script:
In order for this join to work the column names for the join have to be the same in both tables. (If necessary, you can construct new columns for the join when loading the base tables.)