日期:2014-05-17  浏览次数:20580 次

参数的累加!
create table test1
--测试数据
(name varchar(10),
 [201201] int,
 [201202] int,
 [201203] int,)
 
create table test2
(name varchar(10),
 [201201] int,
 [201202] int,
 [201203] int,)
 
 
 select * from dbo.test1
 select * from dbo.test2
/*
name       201201      201202      201203
---------- ----------- ----------- -----------
Income     1           2           3

(1 row(s) affected)

name       201201      201202      201203
---------- ----------- ----------- -----------
income_tt  1           3           6

(1 row(s) affected)
*/

要的效果就是把text1的数据插入text2,text2.201201=text1.201201
text2.201202=text1.201201+text1.201202,如些类推!
当然不是用
update text1 set 201202=(select SUM(201201+Mtd201202) 

的方法,因为text1的字段也是参数来的,就是不知道怎样把之前的参数保留下来,用临时表?
麻烦大家了,谢谢!
------最佳解决方案--------------------
最好改成CTE而不要用这种循环。
------其他解决方案--------------------
有点复杂,我想了个思路不知道可以不。
你可以用动态语句列转行,这样会比较好处理。处理完再列转行。
------其他解决方案--------------------
动态语句.....
------其他解决方案--------------------
学习学习学习学习学习
------其他解决方案--------------------
 declare @str varchar(50)
 declare @addstr varchar(200)
 set @str=1
 while @str<12
 begin 
 set @addstr=.....
 update test2 set @str=(select SUM(@addstr) from test1)
                          set @str=@str+1
                          ........

这个该怎样定义,还是这种 方法走不通
------其他解决方案--------------------
是表达不清吗?上面的是乱写的,就是比喻那样写
------其他解决方案--------------------
这个用cte嵌套循环就实现了拉。
------其他解决方案--------------------
引用:
有点复杂,我想了个思路不知道可以不。
你可以用动态语句列转行,这样会比较好处理。处理完再列转行。

意思是先把text1表先转成死吗?这样很大动作呢,转成列差不多有100多列呢!复杂了点
------其他解决方案--------------------
引用:
这个用cte嵌套循环就实现了拉。

试试!
------其他解决方案--------------------
你先写吧,写不出我再帮你写
------其他解决方案--------------------
引用:
你先写吧,写不出我再帮你写