建立视图的语句如下
CREATE view view_ttt as
select nUserid,dbo.f_hb(nUserid) as nTrade from tb_Person_Job
group by nUseridf_hb的函数如下
create function f_hb(@nuserid int)
returns varchar(50)
as
begin
  declare @str varchar(50)
  set @str = ''
  select @str = @str + ',' + cast(ntrade as varchar) from (select distinct ntrade from tb_Person_Job where nuserid = @nuserid) t
  set @str = right(@str , len(@str) - 1)
  return(@str)
End

解决方案 »

  1.   

    建议你group by以后再调用函数select nUserid,dbo.f_hb(nUserid) as nTrade from 
    (select nUserid from tb_Person_Job
    group by nUserid)tmp
      

  2.   

    select @str = @str + ',' + cast(ntrade as varchar) from (select distinct ntrade from tb_Person_Job where nuserid = @nuserid) t
    ------------------------------------------------------------------
    换成
    select @str = @str + ',' + cast(ntrade as varchar) from tb_Person_Job where nuserid = @nuserid group by ntrade
      

  3.   

    楼上的老师,我换成了你说的这样,select @str = @str + ',' + cast(ntrade as varchar) from tb_Person_Job where nuserid = @nuserid group by ntrade我在运行
    SELECT *
    FROM view_ttt
    WHERE (nTrade = '001')还是提示超时已过期.
      

  4.   

    lang8134(heaton):nUserid 是没有索引的.