兩種方法:
 1: 用FUNCTION
   CREATE FUNCTION getItem
 (@dian nvarchar(15),@zhiwei nvarchar(50))  
RETURNS nvarchar(500) AS  
BEGIN declare @all nvarchar(500)
set @all=''
select @all=@all+ 姓名 + ' ' from uTable 
where 分店名称=@dian  and 职位=@zhiweireturn @all
END---then select 分店名称 ,职位,count(*),dbo.getitem(分店名称 ,职位) as 人员名单
   from Utable

解决方案 »

  1.   

    ---上面的改為:
    select 分店名称 ,职位,count(*),dbo.getitem(分店名称 ,职位) as 人员名单
       from Utable
       group by 分店名称 ,职位
      

  2.   

    选写个函数,
    create function getstr(@店名称 Nvarchar(100),@职位 Nvarchar(100))
    returns Nvarchar(2000)
    as 
    begin
    declare @str Nvarchar(2000)
    set @str=N''
    select @str=@str+N' '+rtrim( 姓名) from table
    where 分店名称=@店名称 and 职位=@职位
    --set @str=right(@str,len(@str)-1)
    return @str
    end
    GO调用:select 分店名称,职位,count(*) as 人数,dbo.getstr(分店名称,职位) as 人员名单 from table group by 分店名称,职位
      

  3.   

    第二種方法:  select 分店名称 ,职位,count(*) as Tcount,'' as allMan 
      into #temp
      from Utable group by 分店名称 ,职位  select distinct 人员名单 as man into #tp from Utable 
      declare @man  nvarchar(50)
       
      while exists(select * from #tp)
      begin
           select top 1 @man = man from #tp 
           update #temp set allMan = allMan + @man + ''
           from Utable as U
           where  分店名称= U.分店名称 and 职位=U.职位 and U.姓名=@man
           delete #tp where man=@man
      end  select * from #temp
      drop table #temp,#tp
      

  4.   


    declare @tempname varchar(20),@temppos varchar(20),@tempmd varchar(20)
    declare @temptable table(分店名称 varchar(20),职位 varchar(20),人数 int,人员名单 varchar(50))
    declare @renshu int,@mingdan varchar(50)
    declare MyCursor  CURSOR 
       global scroll static 
       for SELECT * from top ORDER BY 分店名称,职位
       open MyCursor
       declare @name varchar(20)
       declare @pos varchar(20)
       declare @md varchar(20)
       fetch next  from MyCursor
       into @tempname,@temppos,@tempmd
    select @renshu=1,@mingdan=@tempmd
       fetch next  from MyCursor
       into @name,@pos,@md   while(@@fetch_status=0)
       begin
    if (@tempname<>@name or @temppos<>@pos)
    begin
                    insert into @temptable values (@tempname,@temppos,@renshu,@mingdan)
    select @tempname=@name,@temppos=@pos,@renshu=1,@mingdan=@md
    end
             else
                    select @renshu=@renshu+1,@mingdan=@mingdan+@md   fetch next  from MyCursor
       into @name,@pos,@md
       end
       close MyCursor
       deallocate MyCursor                insert into @temptable values (@tempname,@temppos,@renshu,@mingdan)
    select * from @temptable
      

  5.   

    这个最方便:
    create function getstr(@店名称 Nvarchar(100),@职位 Nvarchar(100))
    returns Nvarchar(2000)
    as 
    begin
    declare @str Nvarchar(2000)
    set @str=N''
    select @str=@str+N' '+rtrim( 姓名) from table
    where 分店名称=@店名称 and 职位=@职位
    set @str=right(@str,len(@str)-1)
    return @str
    end
    GO调用:select 分店名称,职位,count(*) 人数,dbo.getstr(分店名称,职位) 人员名单 from table group by 分店名称,职位