有人可以帮助我解决我的问题,即在特定时间段内特定方框(1或2)每天获得最后记录的余额。
例如,我的表格如下:
表名:TestTable
Date Time Location Box Balance
20.10.2014. 06:00:00 1 1 345
20.10.2014. 12:00:00 1 1 7356
20.10.2014. 18:45:00 1 1 5678
20.10.2014. 23:54:00 1 1 9845
20.10.2014. 06:00:02 1 2 35
20.10.2014. 12:00:04 1 2 756
20.10.2014. 18:45:06 1 2 578
20.10.2014. 23:54:10 1 2 845
21.10.2014. 06:00:00 1 1 34
21.10.2014. 12:05:03 1 1 5789
21.10.2014. 15:00:34 1 1 1237
21.10.2014. 06:00:00 1 2 374
21.10.2014. 12:05:03 1 2 54789
21.10.2014. 15:00:34 1 2 13237
22.10.2014. 06:00:00 1 1 8562
22.10.2014. 10:00:00 1 1 1234
22.10.2014. 17:03:45 1 1 3415
22.10.2014. 22:00:00 1 1 6742
22.10.2014. 06:00:05 1 2 562
22.10.2014. 10:00:16 1 2 123
22.10.2014. 17:03:50 1 2 415
22.10.2014. 22:00:10 1 2 642
23.10.2014. 06:00:00 1 1 9876
23.10.2014. 09:13:00 1 1 223
23.10.2014. 13:50:17 1 1 7768
23.10.2014. 19:47:40 1 1 3456
23.10.2014. 21:30:00 1 1 789
23.10.2014. 23:57:12 1 1 25
23.10.2014. 06:00:07 1 2 976
23.10.2014. 09:13:45 1 2 223
23.10.2014. 13:50:40 1 2 78
23.10.2014. 19:47:55 1 2 346
23.10.2014. 21:30:03 1 2 89
23.10.2014. 23:57:18 1 2 25
24.10.2014. 06:00:55 1 1 346
24.10.2014. 12:30:22 1 1 8329
24.10.2014. 23:50:19 1 1 2225
24.10.2014. 06:01:00 1 2 3546
24.10.2014. 12:30:26 1 2 89
24.10.2014. 23:51:10 1 2 25
...
我们说时间是21.10.2014。 - 2014年10月23日。我希望每天都能获得方框1的最后记录余额。 结果应如下所示:
Date Time Location Box Balance
21.10.2014. 15:00:34 1 1 1237
22.10.2014. 22:00:00 1 1 6742
23.10.2014. 23:57:12 1 1 25
到目前为止,我已设法编写一个查询,只给我一个日期(整个表中的时间最长的日期)的余额,但我需要在特定时间段内的每个日期保持平衡。
我的错误代码:
SELECT TestTable.[Date], TestTable.[Time], TestTable.[Location], TestTable.[Box], TestTable.[Balance]
FROM TestTable
WHERE Time=(SELECT MAX(Time)
FROM TestTable
WHERE Location=1 AND Box=1 );
请记住,我是非常新的。
TNX!
答案 0 :(得分:0)
您正在寻找的是GROUP BY语句并稍稍移动您的MAX:
SELECT TestTable.[Date], MAX(TestTable.[Time]), TestTable.[Location],TestTable.[Box],
TestTable.[Balance] FROM TestTable WHERE Location=1 AND Box=1 GROUP BY TestTable.[Date];
您还想选择某个时间段,我不熟悉您在表格中使用日期格式,但您会明白这一点:
SELECT ... WHERE TestTable.[Date] BETWEEN '21.10.2014.' AND '23.10.2014.';
答案 1 :(得分:0)
两件事 -
首先,在添加另一个FROM
子句之前,不需要再次添加WHERE
。 (除非你使用子查询,但这是另外一件事)。你会这样做 -
FROM MyTable
WHERE condition1 AND condition2 AND condition3
其次,如果您想要每个日期的MAX
时间,只需添加GROUP BY
即可。
GROUP BY Date
这意味着它会显示每个日期的MAX
时间。
SELECT
Date,
MAX(Time) AS LastTime,
Balance
FROM
TestTable
WHERE Location=1 AND Box=1
GROUP BY Date
ORDER BY Date
这会显示Date
,即当天的最后一次(MAX(Time)
)以及该条目的余额。