SQL Server如何导出列值

问题描述 投票:-1回答:1

我有一个类似以下的表格

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重复。

sql-server sql-server-2008 sql-server-2005 sql-server-2012 sql-server-2008-r2
1个回答
0
投票

根据您的描述和与结果不同步的示例数据,看起来这就是您想要的。

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
© www.soinside.com 2019 - 2024. All rights reserved.