You need to enable JavaScript to run this app. 如何关联Oracle两张表product1、product2获取带差值的全量查询结果
优惠活动
大模型
产品
解决方案
定价
更多

如何关联Oracle两张表product1、product2获取带差值的全量查询结果

解决方案

你需要使用Oracle的**全外连接(FULL OUTER JOIN)**实现需求,该连接方式会保留两张表中所有匹配、不匹配的行,刚好覆盖两张表出现过的所有产品记录。

可直接运行的SQL代码

SELECT
  NVL(t1.product, t2.product) AS product,
  t1.value AS value_t1,
  t2.value AS value_t2,
  -- 计算差值并按照要求格式化结果
  CASE 
    WHEN NVL(t2.value, 0) - NVL(t1.value, 0) < 0 
    THEN '(' || ABS(NVL(t2.value, 0) - NVL(t1.value, 0)) || ')'
    ELSE TO_CHAR(NVL(t2.value, 0) - NVL(t1.value, 0))
  END AS diff
FROM
  product1 t1
FULL OUTER JOIN
  product2 t2
ON t1.product = t2.product
ORDER BY product;

逻辑说明

  • 用FULL OUTER JOIN关联两张表,关联条件为product字段相等,确保所有产品都出现在结果中
  • NVL(t1.product, t2.product)用来取非空的产品名,避免关联不上时产品名称为空
  • value_t1直接取product1的value字段,关联不上时自动为空,value_t2取值逻辑同理
  • 计算差值时把空值默认转为0再运算,负数按预期格式用括号包裹,非负数直接输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:27:03