您可以使用「Numbers」表生成中間日期/時間值。您的「Numbers」表格將包含單個列,其中包含從零到大於您需要爲給定日期範圍創建的半小時「桶」數量的連續整數。因此,要覆蓋整個月你的表必須包含數字至少達到31 * 48 = 1488我的[數字]表中有10,000行
i
----
0
1
2
3
...
9998
9999
所以它可以處理的〜208天的跨度。現在
,名爲[tbl_Raw_Data]輸入表
ID STARTTIMESTAMP ENDTIMESTAMP
-- ------------------- -------------------
1 2014-09-22 07:05:00 2014-09-22 15:30:00
2 2014-09-22 20:00:00 2014-09-23 04:00:00
我們可以通過當前設定的原始數據
的創建名爲[qryRawDataDateRange]訪問已保存的查詢,以確定起始日期和結束日期開始
SELECT
MIN(DateValue(STARTTIMESTAMP)) AS FirstDate,
MAX(DateValue(ENDTIMESTAMP)) AS LastDate
FROM tbl_Raw_Data
這讓我們
FirstDate LastDate
---------- ----------
2014-09-22 2014-09-23
我們可以使用保存的查詢作爲輸入到下保存的查詢,[qryBucketValues],這對於該日期範圍
SELECT
DateAdd("n", i * 30, FirstDate) AS BucketStart
FROM Numbers, qryRawDataDateRange
WHERE DateAdd("n", i * 30, FirstDate) < DateAdd("d", 1, LastDate)
的返回
BucketStart
-------------------
2014-09-22 00:00:00
2014-09-22 00:30:00
2014-09-22 01:00:00
2014-09-22 01:30:00
2014-09-22 02:00:00
2014-09-22 02:30:00
...
2014-09-22 22:00:00
2014-09-22 22:30:00
2014-09-22 23:00:00
2014-09-22 23:30:00
2014-09-23 00:00:00
2014-09-23 00:30:00
2014-09-23 01:00:00
2014-09-23 01:30:00
2014-09-23 02:00:00
2014-09-23 02:30:00
...
2014-09-23 22:00:00
2014-09-23 22:30:00
2014-09-23 23:00:00
2014-09-23 23:30:00
現在我們需要一個查詢創建的所有30分鐘的「水桶」的價值觀告訴我們原始數據中每個時間段的第一個「桶」。讓我們名稱查詢[qryFirstBucket]
SELECT
ID,
MAX(BucketStart) AS FirstBucket,
ENDTIMESTAMP
FROM
tbl_Raw_Data, qryBucketValues
WHERE BucketStart <= STARTTIMESTAMP
GROUP BY ID, ENDTIMESTAMP
返回
ID FirstBucket ENDTIMESTAMP
-- ------------------- -------------------
1 2014-09-22 07:00:00 2014-09-22 15:30:00
2 2014-09-22 20:00:00 2014-09-23 04:00:00
現在,我們可以創建一個名爲[qryBucketEntriesById]查詢這給我們的個人鬥條目中的原始數據
每一行(ID)
SELECT
ID,
BucketStart
FROM qryFirstBucket, qryBucketValues
WHERE
BucketStart >= FirstBucket AND BucketStart < ENDTIMESTAMP
這讓我們
ID BucketStart
-- -------------------
1 2014-09-22 07:00:00
1 2014-09-22 07:30:00
1 2014-09-22 08:00:00
1 2014-09-22 08:30:00
1 2014-09-22 09:00:00
1 2014-09-22 09:30:00
1 2014-09-22 10:00:00
1 2014-09-22 10:30:00
1 2014-09-22 11:00:00
1 2014-09-22 11:30:00
1 2014-09-22 12:00:00
1 2014-09-22 12:30:00
1 2014-09-22 13:00:00
1 2014-09-22 13:30:00
1 2014-09-22 14:00:00
1 2014-09-22 14:30:00
1 2014-09-22 15:00:00
2 2014-09-22 20:00:00
2 2014-09-22 20:30:00
2 2014-09-22 21:00:00
2 2014-09-22 21:30:00
2 2014-09-22 22:00:00
2 2014-09-22 22:30:00
2 2014-09-22 23:00:00
2 2014-09-22 23:30:00
2 2014-09-23 00:00:00
2 2014-09-23 00:30:00
2 2014-09-23 01:00:00
2 2014-09-23 01:30:00
2 2014-09-23 02:00:00
2 2014-09-23 02:30:00
2 2014-09-23 03:00:00
2 2014-09-23 03:30:00
然後,我們可以將該查詢加入[tbl_Raw_Data](在ID上),以便在必要時檢索其餘的原始數據列。
你在開發什麼平臺?每種語言都是可能的。 – adamdc78 2015-01-21 02:12:03
你好。 MS Access。就像我說的 - 我是新手。 – Joey 2015-01-21 02:15:09
因此,您有大量時間段的數據,並且您希望在該時間範圍內平均分爲半個小時的塊?你在看實際還是目標(你提到了目標,然後繼續說「被利用」)? – adamdc78 2015-01-21 02:18:34