表1
userid  item1 item2 ......表2
userid  item1 item2 item3 ......大概意思是每个表中的item数不定,想用一条SQL sum item列,这SQL能用于表1也能用于表2期待高手...

解决方案 »

  1.   

    显然,用一个SQL无法实现,需要用动态SQL语句。
      

  2.   

    declare @tablename varchar(40)
    declare @sql varchar(8000)set @tablename='表1'
    set @sql=''
    select @sql=@sql+'+'+name from syscolumns
    where id=object_id(@tablename)
    and name<>'userid'                --  and name like 'item%'
    if @sql<>'' 
       set @sql=stuff(@sql,1,1,'')exec('select *,'+@sql+' as Total from '+@tablename)
      

  3.   

    写成存储过程create proc pr_Query
    @tablename varchar(40)
    as
    declare @sql varchar(8000)--set @tablename='表1'
    set @sql=''
    select @sql=@sql+'+'+name from syscolumns
    where id=object_id(@tablename)
    and name<>'userid'                --  and name like 'item%'
    if @sql<>'' 
       set @sql=stuff(@sql,1,1,'')exec('select *,'+@sql+' as Total from '+@tablename)go--调用
    exec pr_Query '表1'
    go
    exec pr_Query '表2'
    go