会不会出现,editId 不同,editCardNum相同的情况!
doModuleList是一定要写函数的!

解决方案 »

  1.   


    create function func_str_sum(@editId int,@editCardNum int)
    returns varchar(8000)
    as
    begin
    declare @sums varchar(8000)
    set @sums=''
    select @sums=@sums+','+cast(doModule as varchar(10))
    from taba where editId=@editId and editCardNum=@editCardNum
    return(stuff(@sums,1,1,''))
    end
    go
    select select editId ,editCardNum , dbo.func_str_sum(editId, editCardNum) as doModuleList  from taba group by editId ,editCardNum
      

  2.   

    --生成测试数据
    create table taba(
    autoid   int,
    editId   int,
    editCardNum  int,
    doModule  int,
    ispermit int)
    insert into taba values(13        ,9       ,1          ,1        ,0)
    insert into taba values(14        ,9       ,1          ,2        ,0)
    insert into taba values(15        ,10      ,2          ,1        ,1)
    insert into taba values(16        ,10      ,2          ,3        ,1)
    insert into taba values(17        ,10      ,3          ,2        ,1)--创建自定义函数
    create function func_str_sum(@editId int,@editCardNum int)
    returns varchar(8000)
    as
    begin
    declare @sums varchar(8000)
    set @sums=''
    select @sums=@sums+','+cast(doModule as varchar(10))
    from taba where editId=@editId and editCardNum=@editCardNum
    return(stuff(@sums,1,1,''))
    end
    go--查询以返回期望的结果集
    select select editId ,editCardNum , dbo.func_str_sum(editId, editCardNum) as doModuleList  from taba group by editId ,editCardNum 
    --输出
    editid    editcardnum   doModuleList
    ---------------------------------------       
     9           1             1,2 
     10          2             1,3
     10          3              2