基于将另一个表中的值与列表进行比较,更改一个表中的值

时间:2017-05-17 18:11:50

标签: sql sql-server-2014

我在SQL Server 2014上有一个数据库,它使用两个表来存储项目,PR和ProjectCustTabFields上的数据。它们共享一个名为WBS1的项目标识符列,我可以使用它来加入。大多数项目都有使用WBS2标识的阶段,WBS2也在两个表中。我需要更新第二个表中名为CustProjectGroup的列的值,这是基于比较第一个表中名为ProjectType的列与列表的值。因此,例如,如果PR.ProjectType是98或99,我需要将ProjectCustTabFields.CustProjectGroup的值设置为ADM。

这是我到目前为止所得到的:

update ProjectCustomTabFields
SET CustProjectGroup = 'ADM'
FROM PR
INNER JOIN ProjectCustomTabFields 
    ON pr.WBS1=projectcustomtabfields.wbs1
WHERE pr.ProjectType in (98,99) 

问题是,这是查看WBS1的第一条记录,根据项目类型分配项目组,然后它将相同的项目组分配给具有相同WBS1的所有后续记录,尽管它们可能有不同的项目类型值。

因此,例如,我可能有4条记录具有相同的WBS1,因为它们是针对单个项目的。总体项目的记录将没有WBS2,每个阶段的记录将具有1,2和3的WBS2。这些阶段可能都具有需要分配给不同项目组的不同项目类型。

非常感谢您提供的任何帮助。

0 个答案:

没有答案