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

如何使用CASE实现表1有表2无记录时显示特殊状态单元格

问题解决方法

你现有查询的重复问题,是逻辑拆分错误导致的:第一部分内连接已经取出了两表匹配的记录,第二部分左连接返回Table1全量记录,其中匹配成功的记录会和第一部分重复,且两边返回的状态值不同,UNION无法自动去重,最终就会出现重复数据。

正确写法不需要用UNION,直接左连接加空值判断就能实现需求:

SELECT
  w.WIP1 AS WIPR,
  w.TimeStamp1 AS TIMESTAMPR,
  COALESCE(t.Status2, 'NOT RECEIVED') AS Status
FROM Table1 w
LEFT JOIN Table2 t ON w.WIP1 = t.WIP2

如果你的业务场景要求WIP和时间同时匹配才认为是同一条记录,可以在关联条件里追加时间匹配规则:

SELECT
  w.WIP1 AS WIPR,
  w.TimeStamp1 AS TIMESTAMPR,
  COALESCE(t.Status2, 'NOT RECEIVED') AS Status
FROM Table1 w
LEFT JOIN Table2 t 
  ON w.WIP1 = t.WIP2
  AND w.TimeStamp1 = t.TIMESTAMP2

逻辑说明

COALESCE函数会优先返回第一个非空参数:如果Table2有匹配记录就返回对应状态值,没有匹配记录时Status2为NULL,就返回你指定的NOT RECEIVED,最终返回结果和你期望的输出格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:24:05