Проверка, находится ли время в пределах набора времени начала и окончания - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь выяснить, находится ли определенное время с набором времени начала и окончания для каждого идентификатора между 2 различными таблицами

Например, есть 2 таблицы Table_A и Table_B

Таблица A Схема выглядит следующим образом

ID | timestamp | status - содержит информацию для каждой единицы времени (скажем, каждую минуту)

Схема таблицы B выглядит следующим образом

ID | Start_timestamp | End_timestamp - Однако для каждого идентификатора на одну и ту же дату есть несколько записей.

Я хочу выяснить, находится ли временная метка в Таблице A между какой-либо из меток start_timestamp или end_timestamps в Таблице B

Ожидаемые результаты

TABLE_A

ID | timestamp | status
1  | 300       | ABC
1  | 600       | ABC
1  | 900       | ABC
1  | 1200      | DEF
...

TABLE_B

ID | Start_timestamp | End_timestamp
1  | 100             | 400 
1  | 700             | 1000

выход

ID | timestamp | status | Flag
1  | 300       | ABC    | True
1  | 600       | ABC    | False
1  | 900       | ABC    | True
1  | 1200      | DEF    | False

1 Ответ

0 голосов
/ 05 января 2019

Это можно сделать с помощью left join и условного агрегирования.

select a.id,a.timestamp,a.status
,max(case when a.timestamp between b.start_time and b.end_time then 'True' else 'False' end) as t_f_flag
from tblA a
left join tblB b on a.id = b.id 
group by a.id,a.timestamp,a.status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...