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

Oracle关联解码表查询多列编码对应描述值实现方法

Oracle 双字段编码关联解码实现方案

涉及表基础信息

  • 人员信息主表(默认表名person_info):存储人员全量基础信息,核心字段包含reason_1(首要死亡原因编码)、reason_2(次要死亡原因编码)
  • 死亡原因解码表(默认表名death_reason_dict):共142条记录,包含2个核心字段:code(死亡原因唯一编码)、description(编码对应的具体原因描述)

约束规则

  • 禁止手动逐行录入编码与描述的映射关系,需直接复用现有解码表数据
  • 禁止使用decode函数做编码匹配
  • 禁止使用WITH子句(子查询因式分解)
  • 输出需保留主表全部原有字段,新增reason_1_desc、reason_2_desc两个字段,分别存储两个死亡原因编码对应的描述值

可直接执行的实现SQL

SELECT
  p.*,
  d1.description AS reason_1_desc,
  d2.description AS reason_2_desc
FROM person_info p
LEFT JOIN death_reason_dict d1
  ON p.reason_1 = d1.code
LEFT JOIN death_reason_dict d2
  ON p.reason_2 = d2.code;

逻辑说明

  • 对同一张解码表做两次左连接,分别赋予不同别名d1、d2,依次匹配主表的reason_1、reason_2字段,无需重复建表或手动维护映射
  • 选用左连接而非内连接,可避免因编码为空、编码在解码表无对应记录导致主表人员数据被意外过滤,无匹配记录时对应描述字段自动返回空值
  • 语句未使用decode函数、未使用WITH子句,完全满足所有约束要求

样例效果验证

主表测试数据:

person_idnamereason_1reason_2
1王某I21J18
2赵某C34I10

解码表测试数据:

codedescription
I21急性心肌梗死
J18未特指病原体的肺炎
C34肺恶性肿瘤
I10原发性高血压

SQL执行后返回结果:

person_idnamereason_1reason_2reason_1_descreason_2_desc
1王某I21J18急性心肌梗死未特指病原体的肺炎
2赵某C34I10肺恶性肿瘤原发性高血压

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:12:39