假设一个表的数据如下:
ID Name
1  a
1  b
2  a
2  c要显示为
ID Name
1  a,b
2  a,c这样的SQL语句要怎么写?

解决方案 »

  1.   


    /*
    CREATE TABLE table1
    (ID int ,Name nvarchar(50))INSERT INTO table1
     SELECT 1,'a'
     UNION ALL 
     SELECT 1,'b'
     UNION  ALL
     SELECT 2,'a'
     UNION ALL 
     SELECT 2,'c'
    */
    --SQL
    CREATE FUNCTION dbo.f_GetName(@ID int)
      RETURNS nvarchar(1000)
    AS 
    BEGIN
      DECLARE @s nvarchar(1000)
      SET @s='' 
      SELECT @s=@s+[Name]+',' FROM table1 WHERE  ID=@ID
      RETURN (left(@s,len(@s)-1))
    END
    SELECT ID,dbo.f_GetName(ID) AS [Name] FROM table1 GROUP BY ID
    /*
    DROP TABLE table1
    DROP FUNCTION dbo.f_GetNameTEST DATA
    1 a,b
    2 a,c
    */