假设有四条数据:
员工ID 出勤日期   打卡时间
江小鱼 2003-07-21  8:30
江小鱼 2003-07-21  12:30
江小鱼 2003-07-21  14:30
江小鱼 2003-07-21  17:30
怎么把它合并为一条记录,如下形式:
江小鱼 2003-07-21  8:30,12:30,14:30,17:30
并在GRIDDATA里显示出来。

解决方案 »

  1.   

    select * from 表
    where 员工ID=江小鱼 and 出勤日期=2003-07-21 
    str_name:=江小鱼 ;
    str_date:=2003-07-21; 
    str_datetime:='';
    for i:=0 to table1.recordcount-1 do
    begin 
    str_datetime:=str_datetime+table1['打卡时间']+' ';
    table1.next;
    end; 
    delete from 表
    where 员工ID=江小鱼 and 出勤日期=2003-07-21 
    insert into 表(员工ID,出勤日期,打卡时间)
    values(str_name,str_date,str_datetime);
      

  2.   

    自定义一个字段,time字段相加(不是+,是合并),可以吗?
      

  3.   

    各位的想法都不错,我是想要么通过一条SQL语句生成视图,要么通过一定的处理放入另一个临时表中,但一定要考虑到效率,因为数据量可能很大。大家继续讨论,看还有没有更好的办法,只要提出了思路都有分,分不够还可再加的。
      

  4.   

    如果是sql server 2000create function getstr(@name varchar(20),@Date datetime)
    returns varchar(2000)
    as 
    begin
    declare @str varchar(2000)
    set @str=''
    select @str=@str+','+rtrim(cast(打卡时间 as varcahr(20))) from 表 where 姓名=@name and 出勤日期 = @Date
    set @str=right(@str,len(@str)-1)
    return @str
    end
    go语句:
    select 姓名,dbo.getstr(姓名,出勤日期)  from 表 where 姓名= '江小鱼'  group by 姓名
    Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 /Expert/reply.asp,行105