Oracle中对比TBL_FIBER_INV_JOBS与TBL_FIBER_INV_JOBS_H的跨度长度变化
Oracle表字段数值增减对比查询
要对比TBL_FIBER_INV_JOBS和TBL_FIBER_INV_JOBS_H两张表中MAINT_ZONE_NE_SPAN_LENGTH字段的数值变化,新增标记列区分增长或下降,可以通过关联两张表+CASE条件判断实现,具体SQL如下:
SELECT t.SPAN_ID, t.LINK_ID, t.MAINT_ZONE_NE_SPAN_LENGTH AS current_length, h.MAINT_ZONE_NE_SPAN_LENGTH AS history_length, CASE WHEN t.MAINT_ZONE_NE_SPAN_LENGTH > h.MAINT_ZONE_NE_SPAN_LENGTH THEN 'increased' WHEN t.MAINT_ZONE_NE_SPAN_LENGTH < h.MAINT_ZONE_NE_SPAN_LENGTH THEN 'decreased' ELSE 'unchanged' -- 可选:处理数值无变化的情况 END AS change_status FROM TBL_FIBER_INV_JOBS t JOIN TBL_FIBER_INV_JOBS_H h ON t.SPAN_ID = h.SPAN_ID AND t.LINK_ID = h.LINK_ID;
说明:
- 用
SPAN_ID和LINK_ID作为关联键,确保是同一条记录的前后数值对比 current_length和history_length分别展示两张表的字段值,方便直观查看CASE语句根据数值大小判断,返回对应的状态标记;如果不需要展示无变化的情况,可以去掉ELSE分支(此时无变化的记录会返回NULL)- 如果需要处理其中一张表存在缺失记录的场景,可以把
JOIN换成LEFT JOIN或FULL OUTER JOIN,根据实际业务需求调整
内容的提问来源于stack exchange,提问作者Nadeem
相关产品推荐
相关产品推荐

