首页 > 代码库 > 动态拼接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

效果预览: