数据统计的问题----------特请邹建大哥指教

jinhai2003 2004-04-19 10:21:59
现在我要将今天早上08:00:00到明天早上07:59:59之间的所有数据(字段DTRN)求和汇总后生成一报表,汇总后的结果表示今天的累计值
表名:A
表结构及表记录如下:
YMDHM DTRN
2004-04-01 07:59:59.000 .0
2004-04-01 09:40:06.000 .0
2004-04-01 19:59:59.000 .3
2004-04-01 22:40:06.000 .5
2004-04-02 05:50:42.000 .5
2004-04-02 06:45:48.000 .5
2004-04-02 07:45:42.000 .5
2004-04-02 07:59:59.000 .4
2004-04-02 08:12:22.000 .5
2004-04-02 08:42:23.000 .5
2004-04-02 09:02:31.000 .5
2004-04-02 09:37:39.000 .5
2004-04-02 11:17:18.000 1.5
2004-04-02 13:09:27.000 .5
2004-04-02 15:40:06.000 .0
2004-04-02 19:59:59.000 .3
2004-04-02 22:40:06.000 .5
2004-04-02 23:53:06.000 .5
2004-04-03 04:43:00.000 2.5
2004-04-03 07:59:59.000 1.2
2004-04-03 09:59:37.000 .5
2004-04-03 19:59:59.000 .2
2004-04-03 22:40:06.000 .5
2004-04-04 03:52:43.000 .5
2004-04-04 04:47:34.000 .5
2004-04-04 05:26:58.000 .5
2004-04-04 06:39:36.000 .5
2004-04-04 07:59:59.000 .0
统计后的报表应为:
YMDHM DTRN
2004-04-01 2.7
2004-04-02 9.0
2004-04-03 3.2
请问用存储过程能否实现,或用其他方法能实现请各位大哥不吝赐教,多谢了!!


...全文
29 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-04-19
  • 打赏
  • 举报
回复
float是非精度类型,结果当然会这样.
outwindows 2004-04-19
  • 打赏
  • 举报
回复
DTRN 为 float 型时为什么结果是这样的呢?
YMDHM DTRN
---------- ----------------------------------------
2004-03-31 0.0
2004-04-01 2.6999999999999997
2004-04-02 9.0
2004-04-03 3.2000000000000002
arrow_gx 2004-04-19
  • 打赏
  • 举报
回复
select DATEPART (yyyy, YMDHM ) ,DATEPART (mm, YMDHM ),DATEPART (dd, YMDHM ),sum(dtrm) from table group by DATEPART (yyyy, YMDHM ) ,DATEPART (mm, YMDHM ),DATEPART (dd, YMDHM )
zjcxc 2004-04-19
  • 打赏
  • 举报
回复
--测试

--测试数据
create table a(YMDHM datetime,DTRN decimal(5,1))
insert a select '2004-04-01 07:59:59.000',.0
union all select '2004-04-01 09:40:06.000',.0
union all select '2004-04-01 19:59:59.000',.3
union all select '2004-04-01 22:40:06.000',.5
union all select '2004-04-02 05:50:42.000',.5
union all select '2004-04-02 06:45:48.000',.5
union all select '2004-04-02 07:45:42.000',.5
union all select '2004-04-02 07:59:59.000',.4
union all select '2004-04-02 08:12:22.000',.5
union all select '2004-04-02 08:42:23.000',.5
union all select '2004-04-02 09:02:31.000',.5
union all select '2004-04-02 09:37:39.000',.5
union all select '2004-04-02 11:17:18.000',1.5
union all select '2004-04-02 13:09:27.000',.5
union all select '2004-04-02 15:40:06.000',.0
union all select '2004-04-02 19:59:59.000',.3
union all select '2004-04-02 22:40:06.000',.5
union all select '2004-04-02 23:53:06.000',.5
union all select '2004-04-03 04:43:00.000',2.5
union all select '2004-04-03 07:59:59.000',1.2
union all select '2004-04-03 09:59:37.000',.5
union all select '2004-04-03 19:59:59.000',.2
union all select '2004-04-03 22:40:06.000',.5
union all select '2004-04-04 03:52:43.000',.5
union all select '2004-04-04 04:47:34.000',.5
union all select '2004-04-04 05:26:58.000',.5
union all select '2004-04-04 06:39:36.000',.5
union all select '2004-04-04 07:59:59.000',.0
go

--统计
select YMDHM=convert(varchar(10),dateadd(hour,-8,YMDHM),120),DTRN=sum(DTRN)
from a
group by convert(varchar(10),dateadd(hour,-8,YMDHM),120)
go

--删除测试
drop table a

/*--测试结果
YMDHM DTRN
---------- ----------------------------------------
2004-03-31 .0
2004-04-01 2.7
2004-04-02 9.0
2004-04-03 3.2

(所影响的行数为 4 行)
--*/
zjcxc 2004-04-19
  • 打赏
  • 举报
回复
--上面写错了
select YMDHM=convert(varchar(10),dateadd(hour,-8,YMDHM),120),DTRN=sum(DTRN)
from a
group by convert(varchar(10),dateadd(hour,-8,YMDHM),120)
zjcxc 2004-04-19
  • 打赏
  • 举报
回复

select convert(varchar(10),dateadd(hour,8,YMDHM),120),DTRN=sum(DTRN)
from 表
group by DTRN

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧