You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2008中如何按时间范围关联Table A与Table B?

SQL Server 2008 时间区间关联表的实现方法

表结构与数据

Table A

Start               End
---------------------------------------
2022-04-29 15:00:00 2022-04-29 15:30:00
2022-04-29 15:30:00 2022-04-29 17:00:00
2022-04-29 17:00:00 2022-04-29 18:00:00
2022-04-29 18:00:00 2022-04-29 18:30:00
2022-04-29 18:30:00 2022-04-29 20:00:00

Table B

Start             Value
-----------------------
2022-04-29 12:00:00 100
2022-04-29 15:30:00 200
2022-04-29 16:00:00 300
2022-04-29 18:00:00 400
2022-04-29 21:00:00 500

实现SQL语句

要保留Table A的所有行,同时匹配Table B中时间落在A区间内的记录,使用LEFT JOIN结合时间区间条件即可:

SELECT 
    a.Start,
    a.End,
    b.Value
FROM 
    TableA a
LEFT JOIN 
    TableB b ON b.Start >= a.Start AND b.Start < a.End

结果说明

执行后会得到符合预期的结果,无匹配的行Value列显示NULL(对应示例中的NaN,SQL Server中用NULL表示空值):

Start               End                Value
--------------------------------------------
2022-04-29 15:00:00 2022-04-29 15:30:00 200
2022-04-29 15:30:00 2022-04-29 17:00:00 300
2022-04-29 17:00:00 2022-04-29 18:00:00 NULL
2022-04-29 18:00:00 2022-04-29 18:30:00 400
2022-04-29 18:30:00 2022-04-29 20:00:00 NULL

补充说明

  • LEFT JOIN确保Table A的所有行都被保留,即使Table B中没有匹配记录。
  • 时间条件b.Start >= a.Start AND b.Start < a.End避免了重复匹配(比如示例中2022-04-29 15:30:00仅匹配到Table A的第二行)。

内容的提问来源于stack exchange,提问作者Starbucks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:45:33