Oracle SQL:如何两次关联两张表实现位置编码展示?
实现方案:获取工单的当前与历史位置编码
核心思路
通过两次关联locn_hdr表,分别匹配工单的当前位置ID(locn_id)和历史位置ID(prev_locn_id),从而获取对应的位置编码。
SQL实现代码
SELECT ch.case_nbr, curr_loc.locn_brcd AS 当前位置编码, -- 处理无历史位置的情况,用COALESCE替换为自定义文本 COALESCE(prev_loc.locn_brcd, '无历史位置') AS 历史位置编码 FROM case_hdr ch -- 关联当前位置表,确保工单都能获取有效当前位置编码 JOIN locn_hdr curr_loc ON ch.locn_id = curr_loc.locn_id -- 左关联历史位置表,避免丢失无历史位置的工单 LEFT JOIN locn_hdr prev_loc ON ch.prev_locn_id = prev_loc.locn_id;
关键说明
JOIN关联当前位置:基于业务假设(case_hdr的locn_id在locn_hdr中必有对应记录),确保每个工单都能拿到当前位置编码LEFT JOIN关联历史位置:兼容工单无历史位置(prev_locn_id为空)的场景,避免这类工单被过滤COALESCE函数:当历史位置编码为空时,替换为更友好的显示文本,可根据业务需求调整内容
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

