比如,表T1,有Id,Name,Sex,并有如下记录:
Id Name
1 张
1 三 
1 丰 
2 陈 
2 晓 
2 薇 希望查出结果如下:
Id Name_full
1 张三丰 
2 陈晓薇 
然后关联到其他表进行查询。这段SQL怎么写?求大虾门教教。
搜了很多例子好像都不怎么适用。。

解决方案 »

  1.   

    --> 测试数据:[tb]
    IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
    GO 
    CREATE TABLE [tb]([Id] INT,[Name] VARCHAR(2))
    INSERT [tb]
    SELECT 1,'张' UNION ALL
    SELECT 1,'三' UNION ALL
    SELECT 1,'丰' UNION ALL
    SELECT 2,'陈' UNION ALL
    SELECT 2,'晓' UNION ALL
    SELECT 2,'薇'
    --------------开始查询--------------------------SELECT  *
    FROM 
    (
    SELECT DISTINCT [Id],
    (select[Name]+'' FROM [tb] WHERE  [Id] =t.[Id] FOR XML PATH('')) AS [Name]
    FROM [tb] AS t
    ) AS a 
    JOIN .....
      

  2.   


    IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
    GO 
    CREATE TABLE [tb]([Id] INT,[Name] VARCHAR(2))
    INSERT [tb]
    SELECT 1,'张' UNION ALL
    SELECT 1,'三' UNION ALL
    SELECT 1,'丰' UNION ALL
    SELECT 2,'陈' UNION ALL
    SELECT 2,'晓' UNION ALL
    SELECT 2,'薇'    SELECT DISTINCT [Id],
        [Name]=(select[Name]+'' FROM [tb] WHERE  [Id] =t.[Id] FOR XML PATH(''))
        FROM [tb] AS t
    /*
    Id Name
    1 张三丰
    2 陈晓薇
    */
      

  3.   

    if object_id(N'[T1]') is not null drop table [T1]
    create table [T1]([ID] int,[name] varchar(10) collate chinese_prc_ci_as)
    go
    insert into [T1]
    select 1,N'张' union all
    select 1,N'三' union all
    select 1,N'丰' union all
    select 2,N'陈' union all
    select 2,N'晓' union all
    select 2,N'薇'select distinct ID,(SELECT [name]+'' FROM [T1] where t.[ID]=[ID] for xml path('')) 'name'
    from [T1] t/*(6 row(s) affected)
    ID          name
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1           张三丰
    2           陈晓薇(2 row(s) affected)*/
      

  4.   

    搞定。。谢谢楼上的了。。我的SQL太差了 呵呵 结贴