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

Oracle 11g基于日期关联两张表,为表B补充CUSTOMID字段求助

Oracle 11g 基于日期关联补充字段解决方案

表结构梳理

表A(客户日期区间表)

  • CUSTOMID:客户ID(需补充至表B的字段)
  • START_DATE:客户生效起始日期
  • END_DATE:客户生效截止日期

表B(订单表)

  • ORDERID:订单ID
  • ORDER_DATE:订单日期

预期结果

为表B的每条订单记录匹配对应日期区间内的CUSTOMID,生成包含ORDERID、ORDER_DATE、CUSTOMID的结果集。

查询语句实现

方法1:LEFT JOIN关联(推荐,保留表B所有记录)

SELECT 
    b.ORDERID,
    b.ORDER_DATE,
    a.CUSTOMID
FROM 
    表B b
LEFT JOIN 
    表A a ON b.ORDER_DATE BETWEEN a.START_DATE AND a.END_DATE;

方法2:子查询(适用于单日期仅匹配一个客户区间的场景)

SELECT 
    ORDERID,
    ORDER_DATE,
    (SELECT CUSTOMID FROM 表A a WHERE b.ORDER_DATE BETWEEN a.START_DATE AND a.END_DATE) AS CUSTOMID
FROM 
    表B b;

注意事项

  • 若单个订单日期匹配到表A中多个客户区间,会返回多条重复订单记录,需根据业务规则添加额外过滤条件(如取最新生效的客户ID、指定区间优先级等)。
  • 使用LEFT JOIN可保证表B中无匹配区间的订单记录也被保留,此时CUSTOMID字段值为NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:15:41