一表中,有好多类型的字段,可能int VARCHAR date  ,另外有很多字段,好几十个,需要合计的,如果一个个字段写也麻烦,而且字段不固定,如何通过一条语句将所有字段合计并体现一行?谢谢

解决方案 »

  1.   

    字段: A,B,C1,C2,C3,C4......C66
    这样的字段,数据有多行,
    想得到的结果是一行数据,也是上面这些字段,但C1-C66字段值要合计
      

  2.   


    select 'select '+stuff((
    select '+'',''+convert(varchar,'+a.name+')' 
    from sys.columns a,sys.tables b where a.object_id=b.object_id and
    b.name='表名' for xml path('')),1,5,'') +' from 表名 '这样?
      

  3.   

    那你就select c1+c2+c3...+c66,或者上面的改改declare @sql varchar(max)
    select @sql='select '+stuff((
    select '+isnull('+a.name+',0)' 
    from sys.columns a,sys.tables b where a.object_id=b.object_id and
    b.name='表名' for xml path('')),1,1,'') +' from 表名 '
    exec (@sql)
      

  4.   

    C1到C66数值型,数值合计还要改这句,得到的结果我要SELECT A,B,SUM(C1),SUM(C2)...SUM(66) FROM 表名 这样能合计出一行出来
      

  5.   

    那你把a,b去了就行,否则得加GROUP BY