--引用论坛上一兄弟的例子
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+name   --正确情况的使用
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql第二种
if exists(select 1 from sysobjects where id=object_id('bm'))
drop table bm
go
CREATE TABLE bm(bmid int,bmname varchar(10) ,username varchar(10) ,hpmc varchar(10) ,gz int)
insert into bm select 1,'销售一部','小张','货品A',1000
insert into bm select 2,'销售二部','小王','货品B',3000
insert into bm select 3,'销售三部','小乐','货品C',2000
insert into bm select 4,'销售四部','小马','货品D',1000declare @sql varchar(8000)
set @sql=‘’
select @sql=@sql+name                 
from syscolumns where id=object_id('bm')
and name <>'gz'
print @sql1. 这两种情况区别在于结果之间 多了几个逗号区分(ISNULL中是如何实现的,能详细点最好)    
     (第一种情况的结果)bmid,bmname,hpmc,username
  其实这个问题好象跟是由第2个问题引起的。2.  假如select @sql=@sql+name换成 select @sql=@sql+name 的话就只能取得一个值了(当有多值时,select只能返回结果中的最后一个值,这个我知道),而select @sql=@sql+name为什么能返回多个值,难道select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢2.  

解决方案 »

  1.   

    多一个逗号的目的:bmid,bmname,hpmc,username没逗号结果:bmidbmnamehpmcusername
      

  2.   

    select @sql=@sql+name 一直没变啊不明白楼主第二个问题
      

  3.   

    select @sql=@sql+name能实现循环的功能,将几个结果相加我一直都想不通,请高手能帮下我,能把详细的步骤说下吗。 谢谢  这个就是扫描一遍表,把name字段的值+起来