参数的累加!
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多列呢!复杂了点
[其他解释]
试试!
[其他解释]
你先写吧,写不出我再帮你写
[其他解释]
好的,嘻嘻
[其他解释]
declare @i int
declare @str varchar(50)
declare @addstr varchar(200)
declare @sql varchar(500)
set @i=1
set @addstr = ''
while @i<4
begin
set @str ='m20120'+ convert(varchar(10),@i)
if @addstr = ''
set @addstr = 'm20120'+convert(varchar(10),@i)
else
set @addstr = @addstr + ' + ' + 'm20120'+convert(varchar(10),@i)
set @sql= ' update test2 set '+ @str+'=(select SUM('+@addstr+') from test1)'
print (@sql)
set @i=@i+1
end
是自己想得太复杂了,呵呵!刚好写出,愉快落班!
[其他解释]
想不出来呢!对with 的用法不是很熟悉,完全没有那思路,
黄老师来点提示!