"Numbers"테이블을 사용하여 중간 날짜/시간 값을 생성 할 수 있습니다. "Numbers"테이블에는 0부터 연속 된 정수를 포함하는 단일 열이 있으며 주어진 기간 동안 생성해야하는 30 분의 "버킷"수보다 큽니다. 그래서, 당신의 표가 적어도 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]라는 이름의 액세스에 저장된 쿼리를 생성하고 종료하여 시작할 수 있습니다
우리에게
FirstDate LastDate
---------- ----------
2014-09-22 2014-09-23
을 제공
SELECT
MIN(DateValue(STARTTIMESTAMP)) AS FirstDate,
MAX(DateValue(ENDTIMESTAMP)) AS LastDate
FROM tbl_Raw_Data
우리는 그 저장된 쿼리를 사용할 수 있습니다
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
이제 우리는 질의를 필요로 반환 날짜
SELECT
DateAdd("n", i * 30, FirstDate) AS BucketStart
FROM Numbers, qryRawDataDateRange
WHERE DateAdd("n", i * 30, FirstDate) < DateAdd("d", 1, LastDate)
의 범위를 30 분 "버킷"모든 값을 생성 한 다음 저장된 쿼리에 입력, [qryBucketValues], 등 원시 데이터의 각 시간 간격에 대한 첫 번째 버킷을 알려줍니다.이제 [qryFirstBucket]
SELECT
ID,
MAX(BucketStart) AS FirstBucket,
ENDTIMESTAMP
FROM
tbl_Raw_Data, qryBucketValues
WHERE BucketStart <= STARTTIMESTAMP
GROUP BY ID, ENDTIMESTAMP
이제 우리는 원시 데이터
의 각 행 (ID) 우리에게 개별 버킷 항목을 제공합니다 [qryBucketEntriesById]라는 이름의 쿼리를 만들 수 있습니다
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
를 반환하는 쿼리의 이름을 보자
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
안녕하세요. MS 액세스. 내가 말한 것처럼 - 나는 이것에 대해 새로운 사람이다. – Joey
큰 timespans에 대한 데이터가 있고 그 timespans 경계 내에서 30 분 청크로 균등하게 나누고 싶습니까? 실제 또는 목표를보고 있습니까 (대상을 언급 한 후 "활용 중"이라고 말하면됩니까)? – adamdc78