SQL查询:从3个不同的数据库中收集用户

时间:2016-07-11 16:44:27

标签: sql sql-server union

我是SQL和stackoverflow的新手,但我希望有人可以帮助我解决以下问题。

公司有三个不同的数据库,每个数据库代表公司内部的不同部门。

每个数据库都包含employee表中的员工信息: id,名字,姓氏,分区。

有三个部门。每个员工可以在一个以上的部门。身份证是员工独有的;多个部门的员工在每个表中都具有相同的ID。

如何编写一个查询来选择每个独特的员工及其工作的部门(一行)?

以下代码的结果不完整,这意味着有一些失踪员工下落不明。

Insert into #temp1 (id, first name, last name, division AS divison1) from     db1.table WHERE active_flag = 1 AND termination_date IS NULL
Insert into #temp2 (id, first name, last name, division AS division2) from db2.table WHERE active_flag = 1 AND termination_date IS NULL
Insert into #temp3 (id, first name, last name, division AS division3) from   db3.table WHERE active_flag = 1 AND termination_date IS NULL

Insert into #uniqueids (id, first name, last name)
SELECT id, first name, last name FROM #temp1 
 UNION SELECT id, first name, last name FROM #temp2
 UNION SELECT id, first name, last name FROM #temp3

SELECT #uniqueids.id, #uniqueids.first name, #uniqueids.last name,
division1+division2+division3 AS divisions
FROM #uniqueids 
LEFT JOIN #temp1 ON #uniqueids.id=#temp1.id 
LEFT JOIN #temp2 ON #uniqueids.id=#temp2.id
LEFT JOIN #temp3 ON #uniqueids.id=#temp3.id
WHERE #uniqueids.id NOT LIKE '%default%' AND #uniqueids.id NOT LIKE 'S%'

***我编辑了代码以使其更清晰

我知道某些员工下落不明,因为我获得了一份包含778名独立员工名单的结果集。    示例行:    [id,名字,姓氏,分区]
   [asd1234,Julie,Wong,1 2 3]

由于存在包含"默认"并以" S"开头,不计算在内。这些在代码的最后一部分中提到,我刚刚将其包括在内。

我的当前结果集在运行整个查询后拥有770名独特员工,这意味着我错过了8。

我正在使用SQL Server 2014。

0 个答案:

没有答案