这样的SQL语句如何写?(100分)

H

harmer

Unregistered / Unconfirmed
GUEST, unregistred user!
有三条记录.
time xj
08:00:30 10
08:50:00 20
09:00:00 15

统计出来的结果是
time xj
08 30
09 15

如何对整点时间段进行合并统计?

select xj,SUBSTRING (time FROM 1 FOR 2) AS FIRSTNAME from table
这样可以取出时间,可我还要合并统计。
select sum(xj),SUBSTRING (time FROM 1 FOR 2) AS FIRSTNAME from table group by SUBSTRING (time FROM 1 FOR 2)
这样却提示不支持,怎么办?我用paradox数据库

 
select sum(xj),SUBSTRING (time FROM 1 FOR 2) AS FIRSTNAME from table group by time
 
在程序中写吧
 
这样写:
select sum(xj),datename(hh,time) AS a from time1 group by datename(hh,time)

原理就是这样,自己推敲就明白了。
 
select sum(xj),SUBSTRING (time FROM 1 FOR 2) AS FIRSTNAME from table group by SUBSTRING (time FROM 1 FOR 2)
这本来就是标准的SQL语句,可能桌面数据库不支持的原因,我在SQLSERVER下可以。
可否尝试这样做,在保存数据库时取出小时作为一字段,PARADOX只否只支持GROUP by 字段,
比较少用,有点忘了,或更笨的方法用
select extract(hour from time) from table --日期型,字符型用substring
where extract(hour from time)=8 后面的共24条语句哦,解决问题为先嘛。
建议字段不要用time,免得冲突。-小叶
 
select extract(hour from time) from table --日期型,字符型用substring
where extract(hour from time)=8
这两句是什么意思?

 
你的数据库是不是Sql Server?
 
是paradox数据库
 
select sum(xj),SUBSTRING (time FROM 1 FOR 2) AS FIRSTNAME from table group by SUBSTRING (time FROM 1 FOR 2)
 
前两句是我调程序用的,有误!
extract(hour from time) 分解小时
substring(time from 1 for 2)
不过我觉得这样子解决更好,新增一个临时数字字段tmp允许为空.设time字段为时间型
下面的方法在统计时应不影响前面做过的程序,
disablecontrols;
close;
sql.clear;
sql.add('update "table.db"');
sql.add('set tmp=extract(hour from time)');
sql.add('where tmp is null');//数据量不多干脆就不要此句,以前的程序就不用更改
execsql;
close;
sql.clear;
sql.add('select sum(xj),tmp from "tmp.db"');
sql.add('group by tmp');
open;
enablecontrols;
当然前面如果更改时间时把相应的tmp字段置空就行,
 
数据库是paradox,不支持sum(),substring一起写的。
yym的方法是可以考虑,但有没有更好的方法?直接用SQL语句来实现的?
 
select sum(xj), DATEPART(hh,time) AS firstTime from table
group by DATEPART(hh,time)
 
看来,再讨论也是没结果了,就按yym的说法来做吧。
 
临时表!
 
顶部