有这样一个表,有pz,gg,xs三个字段,均为字符型,要求按pz,gg汇总,
 pz       gg        xs 
 b90      20        101
 b90      20        102
汇总后形成
 b90      20        101,102
请问有没有不使用循环而直接汇总形成的语句。
 

解决方案 »

  1.   

    我认为除了循环,没有直接的sql可以实现
      

  2.   

    先写个函数
    CREATE   function   f_sum(@pg varchar(50),@zz   varchar(50))   
      returns   varchar(8000)   
      as   
      begin   
          declare   @str   varchar(8000)   
          set   @str   =   ''   
          select   @str   =   @str   +   ', '   +  xs  from   test2   where   pg =   @pg   and   zz=@zz
          set   @str   =   right(@str   ,   len(@str)   -   1)   
          return(@str)   
      End
    然后调用该函数SELECT DISTINCT pg, zz, dbo.f_sum(pg, zz) AS Expr1
    FROM test2
      

  3.   

    此方法可以,但函数中的表test2为一实表,总不能每汇总一个表就写一个函数吧.
      

  4.   

    这样不行吗?
    select pz,gg,sum(cast( xs as int)) as s_xs from  表 group by  pz,gg     
      

  5.   

    如果是Mysql数据库的话,可以使用Group_Concat函数select group_concat(xs) from table group by pg, gg;
      

  6.   

    如果是oracle 10g以上,可以使用
    select wmsys.wm_concat(xs) from table group by pg, gg;