首页 > 代码库 > 动态拼接SQL计算公式
动态拼接SQL计算公式
1 --模拟数据 2 IF OBJECT_ID(‘tempdb..#t‘)>0 DROP TABLE #t 3 SELECT * INTO #t 4 FROM ( 5 SELECT ‘1‘ id,2030 g,265 h, 830 k,‘g*h+h*k‘ gs,0 tt 6 UNION ALL 7 SELECT ‘2‘ id,2030 g,0 h, 0 k,‘g*4‘ gs,0 tt 8 UNION ALL 9 SELECT ‘3‘ id,2030 g,265 h, 0 k,‘(g+h)*2‘ gs,0 tt10 UNION ALL11 SELECT ‘4‘ id,2030 g,265 h, 0 k,‘(g+h)*2‘ gs,0 tt)t12 --原始数据13 SELECT * FROM #t14 15 --变量16 DECLARE @i int,@n INT17 DECLARE @gs VARCHAR(50)18 DECLARE @sql VARCHAR(MAX)19 20 --按公式类别分类21 IF OBJECT_ID(‘tempdb..#tt‘)>0 DROP TABLE #tt22 SELECT ROW_NUMBER()OVER(ORDER BY gs)rowid 23 ,gs 24 INTO #tt25 FROM #t26 GROUP BY gs27 28 --按公式类别遍历29 SELECT @i=MIN(rowid),@n=MAX(rowid) FROM #tt30 WHILE(@i<=@n)31 BEGIN32 SELECT @gs=gs FROM #tt WHERE rowid=@i33 SET @sql=‘update #t set tt=‘+@gs+‘ where gs=‘‘‘+@gs+‘‘‘‘--生成脚本34 EXEC(@sql)--执行脚本,可以print看效果35 SET @i=@i+136 END37 --处理后效果38 SELECT * FROM #t
效果预览:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。