是否可以根据文本更新一系列行? [编辑]:左侧的表格是已导入的数据。右边的表是最终目标。
B列,值ISA-IEA用于指定EDI订单的开始和结束(简化)。实际数据在行数中是可变的,因此有时可能有5行,有时是45行。所以我不能简单地选择5 ROW然后转到下一个。 谢谢你的任何指示。
答案 0 :(得分:1)
你只需要捕获最顶层(通过E列desc)行,其中B等于ISA。 方法如下:
drop table if exists dbo.Test;
create table dbo.Test (
A int
, B varchar(100)
, C varchar(100)
, D varchar(100)
, E int
);
insert into dbo.Test (A, B, C, D, E)
values (null, 'ISA', '170607', 48, 1)
, (null, 'BFR', '170607', 1, 2)
, (null, 'FST', '170607', 1, 3)
, (null, 'IEA', '170607', 48, 4)
, (null, 'ISA', '170607', 49, 5)
, (null, 'BFR', '170607', 1, 6)
, (null, 'FST', '170607', 1, 8)
, (null, 'FST', '170607', 1, 9)
, (null, 'IEA', '170607', 49, 10);
update tu
set
A = tc.D
from dbo.Test t
outer apply (
select
top (1)
tt.D
from dbo.Test tt
where tt.B = 'ISA'
and tt.E <= t.E
order by tt.E desc
) tc
inner join dbo.Test tu on t.E = tu.E
select
*
from dbo.Test t