Tsql 基于表中的值更新SQL表

Tsql 基于表中的值更新SQL表,tsql,Tsql,我希望使用同一个表中其他行基于公共值的值更新表中的行。 在下表中,我需要更新“生效”、“结束”和“结束日期”为空的行,其中的值来自具有相同IRN和FRN的行,其中的名称=“[FCA CF]需要资格的函数” 因此,第1行将继承第2行的数据,第3行将继承第4行的数据,以此类推 请问我怎么做? 谢谢。看起来像是带有自连接的常规update语句 样本数据 create table data ( IRN int, FRN int, Name nvarchar(50), Effective

我希望使用同一个表中其他行基于公共值的值更新表中的行。 在下表中,我需要更新“生效”、“结束”和“结束日期”为空的行,其中的值来自具有相同IRN和FRN的行,其中的名称=“[FCA CF]需要资格的函数”

因此,第1行将继承第2行的数据,第3行将继承第4行的数据,以此类推

请问我怎么做?
谢谢。

看起来像是带有自连接的常规
update
语句

样本数据

create table data
(
  IRN int,
  FRN int,
  Name nvarchar(50),
  Effective bit,
  Ended bit,
  EndDate date
);

insert into data (IRN, FRN, Name, Effective, Ended, EndDate) values
(100, 200, 'Something else?',                             null, null, null),
(100, 200, '[FCA CF] Functions requiring qualifications', 1,    1,    '2020-12-06'),
(100, 200, 'Not what we are looking for',                 0,    0,    null),
(100, 300, 'Do not touch, different FRN',                 null, null, null);
解决方案

update d1
set d1.Effective = d2.Effective,
    d1.Ended = d2.Ended,
    d1.EndDate = d2.EndDate
from data d1
join data d2
  on  d2.IRN = d1.IRN
  and d2.FRN = d1.FRN
where d1.Effective is null
  and d1.Ended is null
  and d1.EndDate is null
  and d2.Name = '[FCA CF] Functions requiring qualifications';
结果

IRN FRN Name                                        Effective Ended EndDate
--- --- ------------------------------------------- --------- ----- ----------
100 200 Something else?                             True      True  2020-12-06
100 200 [FCA CF] Functions requiring qualifications True      True  2020-12-06
100 200 Not what we are looking for                 False     False null
100 300 Do not touch, different FRN                 null      null  null

请提供一些示例输入数据,我们可以复制粘贴并键入预期结果。如果没有样本数据,您问题的“第1行将继承第2行的数据”部分会令人困惑。