我有两个表,第一个是关于每分钟股票价格的数据表。它由六列组成,包括日期和时间,开盘价,最高价,最低价和收盘价。
表数据
ID Field1 Field2 Field3 Field4 Field5 Field6
2 2016.02.17 11:36:00 PM 1.42918 1.42924 1.42904 1.4292
3 2016.02.17 11:37:00 PM 1.42919 1.42922 1.42886 1.42912
4 2016.02.17 11:38:00 PM 1.42911 1.42917 1.42902 1.42917
5 2016.02.17 11:39:00 PM 1.42918 1.42918 1.42887 1.42904
第二个表包含七列,日期和六个不同的时间。
表时间
ID Field1 Field2 Field3 Field4 Field5 Field6 Field7
2 2016.01.02 5:35:00 AM 6:58:00 AM 12:25:00 PM 3:30:00 PM 5:52:00 PM 7:22:00 PM
3 2016.01.03 5:35:00 AM 6:58:00 AM 12:25:00 PM 3:30:00 PM 5:53:00 PM 7:22:00 PM
4 2016.01.04 5:36:00 AM 6:59:00 AM 12:26:00 PM 3:31:00 PM 5:53:00 PM 7:23:00 PM
5 2016.01.05 5:36:00 AM 6:59:00 AM 12:26:00 PM 3:31:00 PM 5:54:00 PM 7:24:00 PM
我做了四个查询的工作,从第二个表格中获取指定期间的股票价格,显示日期,开盘价,最高价格和成就时间,最低价格和时间以及成就时间和收盘价。
查询1
SELECT
First(Times.Field1) AS [Date], First(Times.Field2) AS FirstOfField2,
First(Times.Field6) AS FirstOfField6, First(Data.Field3) AS [Open],
Max(Data.Field4) AS [Max], Min(Data.Field5) AS [Min], Last(Data.Field6) AS [Close]
FROM Data, Times
WHERE (
((Data.Field1)=[Times].[Field1])
AND ((Data.Field2) Between [Times].[Field2] And [Times].[Field6])
)
GROUP BY Times.ID;
结果1
Date FirstOfField2 FirstOfField6 Open Max Min Close
2016.02.19 5:29:00 AM 6:22:00 PM 1.43217 1.4337 1.42461 1.42653
2016.02.22 5:28:00 AM 6:23:00 PM 1.42744 1.42892 1.40567 1.41282
2016.02.23 5:27:00 AM 6:24:00 PM 1.4133 1.41527 1.40615 1.40813
查询2
SELECT
First(Result.Date) AS [Date], First(Data.Field2) AS MaxTime,
First(Result.Max) AS MaxValue
FROM Data, Result
WHERE (
((Data.Field4)=[Result].[Max])
AND ((Data.Field1)=[Result].[Date])
AND ((Data.Field2) Between [Result].[FirstOfField2] And [Result].[FirstOfField6])
)
GROUP BY Result.Date;
结果2
Date MaxTime MaxValue
2016.02.18 3:21:00 PM 1.43938
2016.02.19 8:39:00 AM 1.4337
2016.02.22 8:37:00 AM 1.42892
查询3
SELECT
First(Result.Date) AS [Date], First(Data.Field2) AS MinTime,
First(Result.Min) AS MinValue
FROM Data, Result
WHERE (
((Data.Field5)=[Result].[Min])
AND ((Data.Field1)=[Result].[Date])
AND ((Data.Field2) Between [Result].[FirstOfField2] And [Result].[FirstOfField6])
)
GROUP BY Result.Date;
结果3
Date MinTime MinValue
2016.02.18 10:01:00 AM 1.42558
2016.02.19 4:32:00 PM 1.42461
2016.02.22 3:40:00 PM 1.40567`
查询4(最终)
SELECT
First(Result.Date) AS [Date], First(Result.FirstOfField2) AS FirstOfFirstOfField2,
First(Result.FirstOfField6) AS FirstOfFirstOfField6, First(Result.Open) AS [Open],
First(Result.Max) AS MaxValue, First(Max.MaxTime) AS MaxTime, First(Result.Min) AS MinValue,
First(Min.MinTime) AS MinTime, First(Result.Close) AS [Close]
FROM Result, [Max], [Min]
WHERE (((Result.Max)=([Max].[MaxValue])) AND ((Result.Min)=([Min].[MinValue])))
GROUP BY Result.Date;
结果4(最终)
Date FirstOfFirstOfField2 FirstOfFirstOfField6 Open MaxValue MaxTime MinValue MinTime Close
2016.02.18 5:30:00 AM 6:22:00 PM 1.42989 1.43938 3:21:00 PM 1.42558 10:01:00 AM 1.43572
2016.02.19 5:29:00 AM 6:22:00 PM 1.43217 1.4337 8:39:00 AM 1.42461 4:32:00 PM 1.42653
2016.02.22 5:28:00 AM 6:23:00 PM 1.42744 1.42892 8:37:00 AM 1.40567 3:40:00 PM 1.41282
2016.02.23 5:27:00 AM 6:24:00 PM 1.4133 1.41527 11:41:00 AM 1.40615 5:47:00 PM 1.40813
当我想确定两个不同日期之间的两个不同时间时,我面临的问题。
答案 0 :(得分:0)
按日期和时间分组。如果您还想通过ID,则按ID,日期和时间进行分组