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
展开
 我来答
atwt27
2016-12-14 · TA获得超过149个赞
知道小有建树答主
回答量:216
采纳率:100%
帮助的人:111万
展开全部
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;
更多追问追答
追问
有列排序,动态SQL的思路是什么?
追答
1、排序列: 按哪一列进行排序。(用来确定,上一条记录是哪一条)
2、动态SQL (因为列为不确定,你只能列名做为参数呀):

declare @sql nvarchar( max);
set @sql = ' update TA '''''''' ;
exec ( @sql) ; --执行 @sql中的内容。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式