基于以前的值SQL SERVER 2005进行更新
发布时间:2020-12-12 14:18:46 所属栏目:MsSql教程 来源:网络整理
导读:我需要更新这些NULL值: PK | CODE---+-------1 | 202 | NULL3 | NULL4 | 305 | NULL6 | NULL7 | NULL8 | 409 | NULL 像这样: PK | CODE-----+------------1 | 202 | 203 | 204 | 305 | 306 | 307 | 308 | 409 | 40 它应始终基于最后的最小值. 我已经尝试了
我需要更新这些NULL值:
PK | CODE ---+------- 1 | 20 2 | NULL 3 | NULL 4 | 30 5 | NULL 6 | NULL 7 | NULL 8 | 40 9 | NULL 像这样: PK | CODE -----+------------ 1 | 20 2 | 20 3 | 20 4 | 30 5 | 30 6 | 30 7 | 30 8 | 40 9 | 40 它应始终基于最后的最小值. 我已经尝试了下面的代码,但它只更新了在开头有价值的那一行之前的第一行. QUERY UPDATE TT SET CODE = (SELECT CODE FROM #TSPV_TEMP T2 with(nolock) WHERE T2.KEY = (tt.KEY -1)) FROM #TSPV_TEMP TT with (nolock) WHERE tt.CODE IS NULL 解决方法你可以这样做:UPDATE TT SET CODE = (SELECT TOP 1 CODE FROM #TSPV_TEMP T2 with(nolock) WHERE T2.KEY < tt.KEY AND CODE IS NOT NULL ORDER BY KEY DESC ) FROM #TSPV_TEMP TT with (nolock) where tt.CODE IS NULL; 请注意子查询中的差异.这将查找更新的CODE的先前非NULL值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |