create function fmerg(@d datetime)   --创建函数
return varchar(8000)                 --定义返回类型
as
begin
declare @re varchar(8000)            --定义变量
set @re=''                           --初始化变量
select @re=@re+','+cast(data as varchar) from 表1 where date=@d  --把表1中字段date等于@d(传入的变量)的所有data记录联接起来,并在每条记录后加个逗号
set @re=right(@re,len(@re)-1)   --去除最后一个多余的逗号
return(@re)                     --返回这个联接起来的值
end
go--调用自定义函数来实现查询
select date,dbo.fmert(date) from 表1 group by date   --以date分组返回date和该date下所有data的连接值

解决方案 »

  1.   

    比如:date         data
    2003-1-1       a
    2003-1-1       b
    2003-1-1       c
    2003-1-2       d
    2003-1-2       e那么select date,dbo.fmert(date) from 表1 group by date 
    返回的值就是2003-1-1         a,b,c
    2003-1-2         d,e
      

  2.   

    其中这一步select @re=@re+','+cast(data as varchar) from 表1 where date=@d得到的结果是
    a,b,c,
    d,e,set @re=right(@re,len(@re)-1)
    得到的结果是
    a,b,c
    d,e