2016-03-04 41 views
0

我有兩張表,第一張是關於股票每分鐘價格的數據表。它由六個欄目組成,日期和時間,開盤價格,最高價格,最低價格和收盤價格。我想在兩天之間的時間間隔內識別數據

表數據

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 

,我所面臨的問題,當我想確定兩個不同的t imes在兩個不同的日期之間。

回答

0

按日期和時間分組。如果您還想通過ID,然後按ID,日期和時間分組

+0

示例:何時需要分析數據在時間間隔從2016年2月17日晚上11時至2016年6月18日凌晨05:00 – leeamra

+0

怎麼樣 ...........? – leeamra