--创建用户函数
CREATE function fn_GetDeptList( @User_ID  nvarchar(50)) 
RETURNS nvarchar(100)
AS
begin
declare @str nvarchar(80)
set @str=''
select @str=@str + ',' + dept from tableA where User_ID  = @User_ID 
set @str=substring(@str,2,len(@str) -1)
RETURN (@str)
end
select User_ID ,User_Name,dbo.fn_getdeptlist(User_ID )
from tableA 
group by User_ID ,User_Name

解决方案 »

  1.   

    --创建用户函数
    CREATE function fn_GetDeptList( @User_ID  nvarchar(50)) 
    RETURNS nvarchar(100)
    AS
    begin
    declare @str nvarchar(80)
    set @str=''
    select @str=@str + ',' + User_Sort from tableA where User_ID  = @User_ID 
    set @str=substring(@str,2,len(@str) -1)
    RETURN (@str)
    end--执行查询
    select User_ID ,User_Name,dbo.fn_getdeptlist(User_ID ) as User_Sort
    from tableA 
    group by User_ID ,User_Name
      

  2.   

    --示例--测试数据
    create table 表([User_ID] varchar(10),[User_Name] varchar(10),[User_Sort] varchar(10))
    insert 表 select 'majun','马俊','建银物业'
    union all select 'majun','马俊','综合部'
    union all select 'majun','马俊','工程部'
    union all select 'majun','马马','综合部'
    union all select 'majun','马马','工程部'
    go--处理函数
    create function f_str(@User_ID varchar(10),@User_Name varchar(10))
    returns varchar(8000)
    as
    begin
    declare @s varchar(8000)
    set @s=''
    select @s=@s+','+[User_Sort] from 表
    where [User_ID]=@User_ID and [User_Name]=@User_Name
    return(stuff(@s,1,1,''))
    end
    go--调用函数实现查询
    select [User_ID],[User_Name],[User_Sort]=dbo.f_str([User_ID],[User_Name]) from 表
    group by [User_ID],[User_Name]
    go--删除测试
    drop table 表
    drop function f_str/*--结果User_ID    User_Name  User_Sort        
    ---------- ---------- ------------------------
    majun      马俊         建银物业,综合部,工程部
    majun      马马         综合部,工程部(所影响的行数为 2 行)
    --*/
      

  3.   

    --建立测试环境
    Create table TEST(User_ID Varchar(10),User_Name Nvarchar(10),User_Sort Nvarchar(10))
    Insert TEST Select 'majun',N'马俊',N'建银物业'
    Union all Select 'majun',N'马俊',N'综合部'
    Union all Select 'majun',N'马俊',N'工程部'
    Union all Select 'majun',N'马马',N'建银物业'
    Union all Select 'majun',N'马马',N'综合部'
    Union all Select 'majun',N'马马',N'工程部'
    GO--建立函数
    Create Function GetUser_Sort(@User_ID varchar(10),@User_Name Nvarchar(10))
    Returns Nvarchar(4000)
    As
    Begin
    Declare @s Nvarchar(4000)
    Set @s=''
    Select @s=@s+','+User_Sort from TEST Where User_ID=@User_ID and User_Name=@User_Name
    Return(stuff(@s,1,1,''))
    End
    GO--测试 
    Select User_ID,User_Name,User_Sort=dbo.GetUser_Sort(User_ID,User_Name) 
    from TEST
    Group By User_ID,User_Name
    GO--删除测试
    Drop table TEST
    Drop Function GetUser_Sort--结果
    /*
    User_ID User_Name User_Sort
    majun 马俊 建银物业,综合部,工程部
    majun 马马 建银物业,综合部,工程部
    */
      

  4.   

    楼主要的结果有点问题。应该是 
    User_ID User_Name User_Sort
    majun 马俊 建银物业,综合部,工程部
    majun 马马 建银物业,综合部,工程部