Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于将另一个表中的值与列表进行比较来更改一个表中的值_Sql_Sql Server 2014 - Fatal编程技术网

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

Sql 基于将另一个表中的值与列表进行比较来更改一个表中的值,sql,sql-server-2014,Sql,Sql Server 2014,我在SQL Server 2014上有一个DB,它使用两个表来存储项目数据,PR和ProjectCustTabFields。它们共享一个名为WBS1的项目标识符列,我可以使用该列加入。大多数项目都有用WBS2标识的阶段,WBS2也在两个表中。我需要根据将第一个表中名为ProjectType的列的值与列表进行比较来更新第二个表中名为CustProjectGroup的列的值。例如,如果PR.ProjectType是98或99,我需要将ProjectCustTabFields.CustProjectG

我在SQL Server 2014上有一个DB,它使用两个表来存储项目数据,PR和ProjectCustTabFields。它们共享一个名为WBS1的项目标识符列,我可以使用该列加入。大多数项目都有用WBS2标识的阶段,WBS2也在两个表中。我需要根据将第一个表中名为ProjectType的列的值与列表进行比较来更新第二个表中名为CustProjectGroup的列的值。例如,如果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。这些阶段可能都有不同的项目类型,需要分配给不同的项目组


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

您可以在项目类型上联接两个表吗?以查看更新的内容。。从中,您是否可以将更新…设置替换为选择*,这将让您了解更新的进展情况。请添加创建表架构和示例表格数据,以描述您拥有的数据和另一个具有预期结果的表。它非常简单,我必须加入第二个和第三个名为WBS2和WBS3的记录字段,然后它就工作了。