日期:2014-05-19  浏览次数:20620 次

列值累加更新问题
表a中只有两个列:id(自变量),zifu(char(1))
表b为一循环语句生成的表,表中有5个列,其中有两个列:id(非自变量),zifu(char(1))。

----
应使用什么sql语句才能把表b的zifu列的值累加到表a列zifu的后面?
求思路或代码?


------解决方案--------------------
参照:
使用用户定义函数,配合SELECT处理完成字符串合并处理的示例
--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a ',1
UNION ALL SELECT 'a ',2
UNION ALL SELECT 'b ',1
UNION ALL SELECT 'b ',2
UNION ALL SELECT 'b ',3
GO

--合并处理函数
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+CAST(col2 as varchar)
FROM tb
WHERE col1=@col1
RETURN(STUFF(@re,1,1, ' '))
END
GO

--调用函数
SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
--删除测试
DROP TABLE tb
DROP FUNCTION f_str
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
GO
------解决方案--------------------
select * from a
union all
select * from b