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