【发布时间】:2021-08-23 23:16:12
【问题描述】:
如何在 TripID 上连接表 A 和 B(见图)以及 TimeTriggered 在 SegmentStart 和 SegmentEnd 之间的位置?
我可以试试:
FROM TableA A
INNER JOIN TableB B
ON A.TripID = B.TripID
AND B.TimeTriggered BETWEEN A.SegmentStart AND A.SegmentEnd
但是,由于 BETWEEN 在两端都包含在内,它会将警报 B 加入到分段 1 和 2。
我可以尝试 >= AND AND
如何捕获所有 3 个警报而不引起某些人的笛卡尔积?
理想的解决方案也是保留索引。
[表格对象]
【问题讨论】:
-
似乎您想要
>=和<或>和<=逻辑,或者您的数据错误。显然,第 2 部分连接到其他 2 行,或者其他行之一与其他行没有关系。 -
所以警报 B 应该与每个片段一起使用,为什么?或者你也不介意
-
然而,正如拉努所说,您的数据不正确,最好的解决方案是修复您的数据
-
根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。
标签: sql sql-server tsql join datetime2