Рассмотрим следующие таблицы.
Table A
Id Paket Starttime Endtime
8 4714 2019-05-23 13:28:28.000 2019-05-23 13:28:31.000
7 4713 2019-05-23 13:28:10.000 2019-05-23 13:28:28.000
6 4712 2019-05-23 13:27:57.000 2019-05-23 13:28:10.000
5 4711 2019-05-23 13:27:40.000 2019-05-23 13:27:57.000
Table B
Timestamp Bla
2019-05-23 13:28:26.000 A
2019-05-23 13:28:27.000 A
2019-05-23 13:28:28.000 A
2019-05-23 13:28:29.000 B
2019-05-23 13:28:30.000 B
2019-05-23 13:28:31.000 B
2019-05-23 13:28:32.000 B
2019-05-23 13:28:33.000 B
Я бы хотел получить следующий результат.
Result
Timestamp Bla Paket
2019-05-23 13:28:26.000 A 4713
2019-05-23 13:28:27.000 A 4713
2019-05-23 13:28:28.000 A 4714
2019-05-23 13:28:29.000 B 4714
2019-05-23 13:28:30.000 B 4714
Некоторые вещи на заметку:
- В
Table A
время начала одного пакета совпадает с временем окончания его предшественника.
- В
Table A
Меня не волнует, являются ли интервалы полуоткрытыми с одной или другой стороны. Например, время 2019-05-23 13:28:28.000
может принадлежать либо Paket 4713, либо 4714 (но не обоим). Любая интерпретация в порядке. В Result
я написал, что 2019-05-23 13:28:28.000
принадлежит 4714, но я мог бы также написать 4713 (а затем добавить еще одну строку для 2019-05-23 13:28:31.000
).
- В
Result
может быть меньше строк, чем в Table B
, поскольку последние строки Table B
могут не попадать ни в один из интервалов времени начала и окончания с Table A
.
Я использую Microsoft SQL Server.
Как будет выглядеть SQL для объединения таблиц A и B для получения желаемого результата?
Цените любые ваши идеи.