我在ACESS数据库中有个表:time
姓名        上班时间      下班时间  工作总时间
name         starttime    endtime    totletime
 张三        7:30         17:00      9:30
 李四        7:20         17:00      9:40
 王五        7:30         17:00      9:30
 张三        7:20         17:00      9:40
现在我建了个查询表
想对姓名相同的进行求和:
李四       9:40
王五       9:30
张三       9:40+9:30
我用的sql查询语句为:
SELECT time.name AS 姓名, sum(time.totletime) AS 总时间
FROM [time]
GROUP BY  name
现在得出的结果是这样
李四       9:40
王五       9:30
张三       18:70
现在就这个张三这一项时间求和这里,时间不能自动进一,怎么做?由于是用的查询表,而没有在程序中,在程序中到可办,这里我就不知怎么做了!

解决方案 »

  1.   

    SELECT time.name AS 姓名, cdate(sum(cdbl(time.totletime))) AS 总时间不知道这样行不
      

  2.   

    SELECT time.name AS 姓名, sum(cdate(time.totletime)) AS 总时间
      

  3.   

    SELECT time.name AS 姓名, sum(cdate(time.totletime)) AS 总时间
    出现了这种:1.3125  这个时间本来是30个小时90分钟的。
      

  4.   

    出现了这种:1.3125  这个时间本来是30个小时90分钟的。
    =====================
    1.3125是天数,你说的“30个小时90分钟”本身就违反了你自己的要求
    cint(1.3125*24)=31小时
    (1.3125*24*60) mod 60=30分钟
    结果应为31小时30分钟。。
      

  5.   

    也搞定了,在sql查询中取int 然后后用字段去减这个int数字,余下部分用60去除加起来就行了,
      

  6.   

    常规下,总工作时间这个字段多余。只要starttime和endtime是短时间格式,这样查询:select [name],sum(datediff("n",starttime,endtime)) as t
    from [time]
    group by [name]结果总时间t是按分计算的,如果要换算到几小时几分这样结果,用SQL语句好象没有现成的函数吧?自己写个函数就是
      

  7.   

    对是自己写的,先int time 得整数时间,然后用,time- int(time) 得小数部分,然后小数部分,然后,sum(int(time))+sum(time-int(time))*100/60 搞定