我有一个类似以下的表格
CaseId NewValue Attibute时间戳记------ -------- -------- --------1 A X 2020-01-01 13:011金WB 2020-01-01 13:021 C P 2020-01-01 13:031 D E 2020-01-01 13:042 M P 2020-05-01 15:202 X WB 2020-05-01 15:262 Y WB 2020-05-01 15:292 X P 2020-05-01 15:31创建表#t1(CaseId Int,NewValue char(2),Attibute char(2),TimeStamp日期时间)插入#t1值(1,'A','X','2020-01-01 13:01'),(1,'Au','WB','2020-01-01 13:02'),(1,'C','P','2020-01-01 13:03'),(1,'D','E','2020-01-01 13:04'),(2,'M','P','2020-05-01 15:20'),(2,'X','WB','2020-05-01 15:26'),(2,'Y','WB','2020-05-01 15:29'),(2,'X','P','2020-05-01 15:31')
我需要如下输出
CaseId NewValue属性时间戳记NewColumn------ -------- -------- -------- ---------1 A X 2020-01-01 13:01空1 Au WB 2020年1月1日13:02 Au WB1 C P 2020-01-01 13:03 Au-WB1 Ma WB 2020年1月1日13:04 Ma-WB1 C D 2020-01-01 13:05 Ma-WB2 Z P 2020-05-01 15:20空2 Q R 2020-05-01 15:21空2 Au WB 2020-05-01 15:26 Au-WB2 Ma WB 2020-05-01 15:29 Ma-WB2 X P 2020-05-01 15:31 Ma-WB
基本上,我需要查找属性何时具有WB,然后连接Attibute和NewValue,然后使用相同的Attibute + NewValue填充新列,直到找到新的WB。
同样,该过程应为新的案例ID重复。
根据您的描述和与结果不同步的示例数据,看起来这就是您想要的。
select *, wb.NewColumn
from #t1 t
outer apply
(
select top 1 x.NewValue + '-' + x.Attibute as NewColumn
from #t1 x
where x.CaseId = t.CaseId
and x.TimeStamp <= t.TimeStamp
and x.Attibute = 'WB'
order by x.TimeStamp
) wb