0

我见过几个有点相似的问题,但没有什么和我的完全一样。一个T-SQL大神应该能回答这个是一闪而过。

来自 HRMS 系统馈送的员工和部门代码的源表(馈送器)。我的 SQL Server 数据库中有一个雇员表和一个部门表。我需要有一个存储过程,它将首先在 feeder 表中获取一个不同的部门代码列表,然后检查这些代码以查看它们是否存在于部门表中。如果他们不这样做,则从 feeder 表插入到部门表中。然后,插入到员工表中。

现在我发现其中一位业务分析师一直在 Excel 中获取单独的部门列表并手动添加它们。当数据已经从 HRMS 进入馈线表时,这似乎很疯狂。我可以进行插入,但我不知道如何循环通过 feeder 表来查看每行中的部门代码是否已经存在于部门表中。感谢您的任何帮助。

J。

4

2 回答 2

1

您可以在 SQL 2008 或更高版本中使用merge关键字。我刚刚测试了这个片段:

merge department as d
using feeder as f on f.code = d.code
  when not matched then
    insert (code)
      values (f.code);
于 2013-03-16T14:09:36.450 回答
0

合并将起作用。由于我们只是在做插入,这也将:

INSERT 
    department
    ( 
       departmentCode
    )
SELECT departmentcode 
FROM 
    ( 
        SELECT 
            departmentcode 
        FROM 
            feeder
        EXCEPT 
        SELECT 
            departmentcode
        FROM 
            department
    ) c;

使用两个表中的部门代码索引,这种模式通常表现良好。

于 2013-03-19T15:42:14.743 回答