Sql server 2012 基于当前行和上一行在SQL列中保留旧值和新值

Sql server 2012 基于当前行和上一行在SQL列中保留旧值和新值,sql-server-2012,Sql Server 2012,我的桌子应该是这样的: 我的要求是我必须添加一个名为ChangeType的新列,该列应根据Phasechange进行计算 如果第一行phasechange为null,则应为“基线”。如果有值,则应为phasechange。在本例中,对于修订号=2,phasechange=1,则changetype=phasechange作为修订号=1的先前值,phasechange为null 然后对于修订号=3,phasechange=null,因此变更类型应再次为phasechange 然后对于revisio

我的桌子应该是这样的:

我的要求是我必须添加一个名为ChangeType的新列,该列应根据Phasechange进行计算

如果第一行phasechange为null,则应为“基线”。如果有值,则应为phasechange。在本例中,对于修订号=2,phasechange=1,则changetype=phasechange作为修订号=1的先前值,phasechange为null

然后对于修订号=3,phasechange=null,因此变更类型应再次为phasechange

然后对于revisionno=4,phasechange=3,因此changeType也应该是phasechange(对于revisionno=3,它是空的)

对于(5,6)阶段变更=3中的修订号,与previos版本(4)相同,因此变更类型应基线化

 ProjectID   DocumentNo   RevisionNo     PhaseChange      ChangeType

 102176-001     1             1              NULL         Baselined    

 102176-001     2             2               1           Phasechange     

 102176-001     3             3              NULL         Phasechange     

 102176-001     4             4               3           Phasechange     

 102176-001     5             5               3           Baselined     

 102176-001     6             6               3           Baselined
示例代码:

Create table #temp(
ProjectID varchar(35),
Documentno int,
Revisionno int,
PhaseChange int,
ChangeType varchar(35))

insert into #temp values ( '102176-001',    1,  1,  NULL,NULL)

insert into #temp values ( '102176-001',    2,  2,  1,NULL)

insert into #temp values ( '102176-001',    3,  3,  NULL,NULL)

insert into #temp values ( '102176-001',    4,  4,  3,NULL) 

insert into #temp values ( '102176-001',    5,  5,  3,NULL)


insert into #temp values ( '102176-001',    6,  6,  3,NULL)

欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示它!为什么您的数据中存在如此多的重复?很抱歉,在编辑时出现了重复。现在数据已更正,您使用的是哪种DBMS?(“SQL”只是一种查询语言,而不是DBMS产品)有人能帮我尽快完成吗?我被这个问题困住了