更新语句以基于不存在ProjectId的projectName更新ProjectId。

时间:2014-09-09 19:49:29

标签: sql sql-server-2008 ssis

我有两个不同的数据库,我试图合并数据。目前,项目和用户已分配到项目。用户可以一次处理许多(超过1个)项目。由于项目的名称可能有拼写问题,我已经执行了SSIS模糊分组以匹配数据。唯一的问题是,只有一个数据库跟踪我将用于外部程序的ID,并且处理特定项目的用户的信息可能重叠。

ProjectName_1   Office_1    ContactName_1   contactid_1 ProjectID_1      department_1
MOW             NYC          John Caves                                 Producer
MOW             NYC          Jayson Brodie                              Producer
MOW             NYC          Jonathan Whites                            Editor
MOW             NYC          Dana Rutters                               Camera
MOW             NYC          ALI SAYMON          A00G8S5    A00MVDE 
MOW             NYC          CHRIS TY            A001NJ6    A00MVDE 

基本上,我想根据项目名称更新ProjctId不存在的记录。所以最终结果如下:  

ProjectName_1   Office_1    ContactName_1   contactid_1 ProjectID_1      department_1
MOW             NYC          John Caves                     A00MVDE     Producer
MOW             NYC          Jayson Brodie                  A00MVDE     Producer
MOW             NYC          Jonathan Whites                A00MVDE     Editor
MOW             NYC          Dana Rutters                   A00MVDE     Camera
MOW             NYC          ALI SAYMON          A00G8S5    A00MVDE 
MOW             NYC          CHRIS TY            A001NJ6    A00MVDE 

请记住,有许多不同的项目。

非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是在相关的子查询中放置“选择ProjectName匹配的Top 1 projectId”逻辑:

UPDATE p SET ProjectID_1 = (
    SELECT TOP 1 ProjectID_1 
    FROM Projects
    WHERE ProjectName_1 = p.ProjectName_1 
        AND ProjectID_1 IS NOT NULL
)
FROM Projects p
WHERE ProjectID_1 IS NULL;