在SQL/QlikView中合并表格
问题描述:
是否可以将2个表格与连接或类似结构合并,以便在一个组中的所有不匹配的字段。有些事情是这样的: 所有拥有部门名称的员工都会获得他们的真实部门,并且没有任何部门以“其他”形式结束。在SQL/QlikView中合并表格
部: SectionDesc ID
DEP1 500
DEP2 501
雇员: 名ID
安德斯500
埃里克501
根0
输出: 安德斯DEP1
埃里克Dep2
根其他
问候安德斯Olme
答
你所寻找的是一个外部联接:
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
为了这个连接工作的加盟列名必须是两个表中的相同。 (如果需要,可以在加载基表时为连接构建新的列。)
将NULL替换为NULL的简单方法是'COALESCE()':'COALESCE(Field,'Other')'将返回如果Field为NULL,则为“Other”。有些数据库有其他功能,但'COALESCE'是ANSI,可用于所有真实数据库(不,Access不是真正的数据库!)。 – 2011-04-25 21:13:18