MyTable是:
tday char(3)
dow int(1)
tdate date
ttime time
T0 decimal(5,2)
T1 decimal(5,2)
T2 decimal(5,2)
T3 decimal(5,2)
Total decimal(8,2)
鉴于上述结构和以下数据:
DoW IM CDate CTime G0 G1 G2 G3
Thu 4 2010-12-02 05:29:15 1 3 0 11
Thu 4 2010-12-02 05:34:22 0 4 1 0
Thu 4 2010-12-02 05:39:28 6 0 7 0
Thu 4 2010-12-02 05:44:35 8 7 3 9
Thu 4 2010-12-02 05:49:41 0 7 0 8
Thu 4 2010-12-02 05:54:48 1 7 0 1
Thu 4 2010-12-02 05:59:54 3 0 5 3
Thu 4 2010-12-02 06:05:01 0 9 1 0
Thu 4 2010-12-02 06:10:07 2 9 10 0
Thu 4 2010-12-02 06:15:13 0 0 16 0
Thu 4 2010-12-02 06:20:20 2 0 8 0
Thu 4 2010-12-02 06:25:26 1 0 0 0
Thu 4 2010-12-02 06:30:33 1 5 19 21
Thu 4 2010-12-02 06:35:39 3 0 6 0
Thu 4 2010-12-02 06:40:46 3 4 7 2
Thu 4 2010-12-02 06:45:52 3 3 0 20
Thu 4 2010-12-02 06:50:58 5 0 7 10
Thu 4 2010-12-02 06:56:05 0 7 7 0
Thu 4 2010-12-02 07:01:11 7 0 10 3
Thu 4 2010-12-02 07:06:18 0 0 0 1
Thu 4 2010-12-02 07:11:24 0 0 0 0
Thu 4 2010-12-02 07:16:31 9 3 1 0
Thu 4 2010-12-02 07:21:37 0 0 3 10
Thu 4 2010-12-02 07:26:44 0 1 3 0
我想要得到的是每天小时G0..G3列的总和。
我已尝试通过CDate的CTime顺序从MyTable组中选择CTime,sum(G0),sum(G1),sum(G2),sum(G3);“和各种类似的陈述没有取得任何成功。我想要得到的结果如下:
DoW IM CDate CTime G0 G1 G2 G3
Thu 4 2010-12-02 05:00:00 19 28 16 32
Thu 4 2010-12-02 06:00:00 20 51 86 65
Thu 4 2010-12-02 07:00:00 16 4 17 14
你能帮忙吗?我花了很多时间在Web上查看已经提交的解决方案和其他答案,但是在我需要的特定SQL语句中没有任何内容可以接近。
感谢。格雷厄姆
答案 0 :(得分:2)
我认为你正在寻找像
这样的东西SELECT DoW, IM, CDate, HOUR(CTime) AS recorded_hour, SUM(G0) AS sum_0,
SUM(G1) AS sum)1, SUM(G2) AS sum_2, SUM(G3) AS sum_3
FROM MyTable
GROUP BY recorded_hour
如果您希望不同日期的小时不同,那么您只需将日期列添加到group by子句
答案 1 :(得分:1)
什么类型的CTime和CDate? 您的过去可以在pre& code
中使用普通表结构吗?尝试运行:
Select CDate, HOUR(CTime), sum(G0), sum(G1), sum(G2), sum(G3) from MyTable group by CDate, HOUR(CTime) order by CDate, CTime