考虑以下表格。
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
的行可能比 in 少Table B
,因为 的最后Table B
几行可能不属于 的任何开始-结束时间间隔Table A
。我正在使用 Microsoft SQL Server。
SQL 如何连接表 A 和 B 以获得所需的结果?欣赏您的任何想法。
我想你只是想要join
:
select b.*, a.paket
from b join
a
on b.timestamp >= a.starttime and
b.timestamp < a.endtime;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句