各位达人,大家好,小弟遇到一个难题(SQL 2005),如下,请达人指导:
表如下:zuhao   danweibianhao   danweimingcheng
  1           A                A公司
  1           B                B公司
  2           C                C公司
  2           D                D公司
  2           E                E公司
  3           F                F公司
  3           G                G公司先要实现的结果:
zhuhao   danweibianhao   danweimingcheng
  1         A,B             A公司,B公司
  2         C,D,E          C公司,D公司 E公司
  3         F,G             F公司,G公司
请达人指导,谢谢!!

解决方案 »

  1.   

    http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html
      

  2.   


    --> 测试数据:[test]
    if object_id('[test]') is not null 
    drop table [test]
    create table [test](
    [zuhao] int,
    [danweibianhao] varchar(1),
    [danweimingcheng] varchar(5)
    )
    go
    insert [test]
    select 1,'A','A公司' union all
    select 1,'B','B公司' union all
    select 2,'C','C公司' union all
    select 2,'D','D公司' union all
    select 2,'E','E公司' union all
    select 3,'F','F公司' union all
    select 3,'G','G公司'
    goSELECT distinct a.[zuhao],
    [danweibianhao]=STUFF((SELECT ','+[danweibianhao] 
    FROM [test] b
    WHERE a.zuhao=b.zuhao FOR XML PATH('')),1,1,''),
    [danweimingcheng]=STUFF((SELECT ','+[danweimingcheng] 
    FROM [test] b
    WHERE a.zuhao=b.zuhao FOR XML PATH('')),1,1,'')
    FROM [test]  a
    GROUP BY a.zuhao,[danweibianhao]
    /*
    zuhao danweibianhao danweimingcheng
    -----------------------------------------------
    1 A,B A公司,B公司
    2 C,D,E C公司,D公司,E公司
    3 F,G F公司,G公司
    */
      

  3.   

    --> 测试数据:[tb]
    IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
    GO 
    CREATE TABLE [tb]([zuhao] INT,[danweibianhao] VARCHAR(1),[danweimingcheng] VARCHAR(5))
    INSERT [tb]
    SELECT 1,'A','A公司' UNION ALL
    SELECT 1,'B','B公司' UNION ALL
    SELECT 2,'C','C公司' UNION ALL
    SELECT 2,'D','D公司' UNION ALL
    SELECT 2,'E','E公司' UNION ALL
    SELECT 3,'F','F公司' UNION ALL
    SELECT 3,'G','G公司'
    --------------开始查询--------------------------SELECT [zuhao], 
    danweibianhao=STUFF((SELECT ','+danweibianhao FROM [tb] WHERE [zuhao]=t.[zuhao] FOR XML PATH('')),1,1,''),
    danweimingcheng=STUFF((SELECT ','+danweimingcheng FROM [tb] WHERE [zuhao]=t.[zuhao] FOR XML PATH('')),1,1,'')
    FROM [tb] AS t
    GROUP BY [zuhao] 
    ----------------结果----------------------------
    /* 
    zuhao       danweibianhao       danweimingcheng
    ----------- ---------------------------------------
    1           A,B                  A公司,B公司
    2           C,D,E                C公司,D公司,E公司
    3           F,G                  F公司,G公司(3 行受影响)
    */