2009-09-03 2 views
0

У меня есть таблица, которая выглядит следующим образом:Graphing интервалы времени в Access

StudyId StudyStartDateTime 
============================ 
1  01/01/2009 08:45 AM 
2  01/01/2009 08:53 AM 
... 

Я хотел бы вернуть запрос, который содержит StudyId, а также десять-минутный интервал, в течение которого он был начато:

StudyId Interval 
================== 
1   8:40 AM 
2   8:50 AM 

Это потому, что я хотел бы создать график, отображающий распределение исследований через десятиминутные интервалы.

Интервалы каждые 10 минут между 8 AM-9AM и 1 PM-2PM. Я получил это далеко:

SELECT s.studyid, 
     s.studystartdatetime, 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "08:00:00 AM" AND "08:09:59 AM", 
      "8:00 - 8:10",0) AS ["8:00 - 8:10"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "08:10:00 AM" AND "08:19:59 AM", 
      "8:10 - 8:20",0) AS ["8:10 - 8:20"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "08:20:00 AM" AND "08:29:59 AM", 
      "8:20 - 8:30",0) AS ["8:20 - 8:30"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "08:30:00 AM" AND "08:39:59 AM", 
      "8:30 - 8:40",0) AS ["8:30 - 8:40"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "08:40:00 AM" AND "08:49:59 AM", 
      "8:40 - 8:50",0) AS ["8:40 - 8:50"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "08:50:00 AM" AND "08:59:59 AM", 
      "8:50 - 9:00",0) AS ["8:50 - 9:00"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "01:00:00 PM" AND "01:09:59 PM", 
      "1:00 - 1:10",0) AS ["1:00 - 1:10"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "01:10:00 PM" AND "01:19:59 PM", 
      "1:10 - 1:20",0) AS ["1:10 - 1:20"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "01:20:00 PM" AND "01:29:59 PM", 
      "1:20 - 1:30",0) AS ["1:20 - 1:30"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "01:30:00 PM" AND "01:39:59 PM", 
      "1:30 - 1:40",0) AS ["1:30 - 1:40"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "01:40:00 PM" AND "01:49:59 PM", 
      "1:40 - 1:50",0) AS ["1:40 - 1:50"], 
     Iif(Format(s.studystartdatetime,'hh:nn:ss AM/PM') BETWEEN "01:50:00 PM" AND "01:59:59 PM", 
      "1:50 - 2:00",0) AS ["1:50 - 2:00"] 
FROM dbo_study_viewx211_rpt AS s 

Какие результаты в чем-то вроде этого:

StudyId StudyStartDateTime 8:00 - 8:10 8:10 - 8:20 ... 
================================================================== 
1   28/11/2007 8:15:22 AM   0 8:10 - 8:20 0 ... 
... 

Как можно сгруппировать все интервалы в одну колонку «Interval»?

+0

Вам нужна формула для конвертирования: «01/01/2009 08:45 AM» на «08:40 AM»? – JeffO

+0

Вы посмотрели на функцию SQL Partition? Я только недавно распознал, что Access и Jet/ACE SQL поддерживают его. –

ответ

1

Посмотрите, легче ли делать то, что вы хотите, создав таблицу TimeIntervals, с istart и iend как тип данных Date/Time.

istart  iend  ilabel 
8:00:00 AM 8:09:59 AM 8:00-8:10 
8:10:00 AM 8:19:59 AM 8:10-8:20 
8:20:00 AM 8:29:59 AM 8:20-8:30 
8:30:00 AM 8:39:59 AM 8:30-8:40 
8:40:00 AM 8:49:59 AM 8:40-8:50 
8:50:00 AM 8:59:59 AM 8:50-9:00 
9:00:00 AM 9:09:59 AM 9:00-9:10 

Тогда попробуйте запрос следующим образом:

SELECT 
    s.StudyId 
    , s.StudyStartDateTime 
    , t.istart 
    , t.iend 
    , t.ilabel 
FROM 
    dbo_study_viewx211_rpt AS s 
    , TimeIntervals AS t 
WHERE 
    TimeValue(s.StudyStartDateTime) Between t.istart And t.iend; 

Пример вывода из запроса:

StudyId StudyStartDateTime istart  iend  ilabel 
1  1/1/2009 8:45:00 AM 8:40:00 AM 8:49:59 AM 8:40-8:50 
2  1/1/2009 8:53:00 AM 8:50:00 AM 8:59:59 AM 8:50-9:00 

Вы, вероятно, не хотят StudyStartDate, Istart и iend полей, отображаемых в вашем результаты запроса. Я оставил их здесь, чтобы надеяться облегчить понимание того, как это работает.

1

Я думаю, было бы проще, чтобы ваш запрос просто выходной StudyStartDateTime,

SELECT s.studyid,  
     s.studystartdatetime, 
FROM dbo_study_viewx211_rpt AS s 

затем переключиться на «Сводная таблица» вид и использовать группирование функции сводной таблицы, чтобы сделать форматирование и группировку.

Смежные вопросы