SQL Diff of Whole Date - PullRequest
       8

SQL Diff of Whole Date

0 голосов
/ 05 мая 2011

Я пытаюсь разработать запрос, который будет группировать записи по дате. У меня есть записи, которые представляют события, которые произошли. Если события произошли в одном и том же разделе и в пределах 50 мс друг от друга, их следует сгруппировать. Важная часть моего стола выглядит так:

ID | sectionID | eventDateTime | ...

Я думаю, что я хотел бы сгруппировать по sectionID и eventDateTime (sectionID будет охватывать идентификаторы) и использовать условие Имея, чтобы определить мои ограничения группировки времени. Я также думаю, что это может быть невозможно с запросом. Я видел DATEDIFF(), но это делает расчеты только по одному компоненту дат. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 05 мая 2011

Вы ищете что-то похожее на:

With [Events] As
    (
    Select 1 As Id, 5 As SectionId, Cast('2011-05-04 23:59:59.950' As DateTime) As EventDateTime
    Union All Select 2, 5, '2011-05-05 00:00:00.000'
    Union All Select 3, 5, '2011-05-05 00:00:00.049'
    )
    , TaggedData As
    (
    Select E1.Id, E1.sectionID
        , Cast(Coalesce(E2.EventDateTime, E1.EventDateTime) As Date) As TagEventDateTime
    From [Events] As E1
        Left Join [Events] As E2
            ON E2.sectionID = E1.sectionID
                And E2.Id <> E1.Id
                And E2.EventDateTime >= DateAdd(ms, -50, E1.EventDateTime)
                And E2.EventDateTime <= E1.EventDateTime
    )
Select SectionId, TagEventDateTime
From TaggedData
Group By SectionId, TagEventDateTime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...