SQL 如果为Null,则赋值为上一条不为空的值。(针对每一列)
例如:原始信息ABC--------------1Null2--------------Null34--------------NullNull5处理后为:ABC----...
例如:原始信息
A B C
--------------
1 Null 2
--------------
Null 3 4
--------------
Null Null 5
处理后为:
A B C
--------------
1 Null 2
--------------
1 3 4
--------------
1 3 5
补充:A、B、C列是动态的,有可能是A、B、C、D 展开
A B C
--------------
1 Null 2
--------------
Null 3 4
--------------
Null Null 5
处理后为:
A B C
--------------
1 Null 2
--------------
1 3 4
--------------
1 3 5
补充:A、B、C列是动态的,有可能是A、B、C、D 展开
展开全部
1、你需要有明确的排序列。没有排序列,这个功能是没法实现的。
2、因为列名不确定,所以你只能用动态SQL。
3、假定排序列为 D,且为自增列, 更改 A 列:
update TA
set TA.A = ( select A from TableName TB where TB.D = TA.D -1)
from TableName TA
where TA.A is null;
2、因为列名不确定,所以你只能用动态SQL。
3、假定排序列为 D,且为自增列, 更改 A 列:
update TA
set TA.A = ( select A from TableName TB where TB.D = TA.D -1)
from TableName TA
where TA.A is null;
更多追问追答
追问
有列排序,动态SQL的思路是什么?
追答
1、排序列: 按哪一列进行排序。(用来确定,上一条记录是哪一条)
2、动态SQL (因为列为不确定,你只能列名做为参数呀):
declare @sql nvarchar( max);
set @sql = ' update TA '''''''' ;
exec ( @sql) ; --执行 @sql中的内容。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询