Oracle Apex:基于MINUS结果设置IG查询validated列值的需求
解决方案:改写交互式网格查询实现validated列逻辑
你可以通过在查询中嵌入CASE表达式结合子查询的方式,实现根据两张表的对比结果动态生成validated列的值。以下是两种可行的实现方式:
方式1:使用COUNT统计不匹配记录数
这种方式通过计算MINUS查询的结果行数来判断是否所有记录都匹配:
SELECT CASE WHEN (SELECT COUNT(*) FROM (SELECT emp_id, emp_name, emp_designation, emp_hier FROM employees MINUS SELECT emp_id, emp_name, emp_designation, emp_hier FROM employee_admin)) = 0 THEN 'Y' ELSE 'N' END AS validated, emp_id, emp_name, emp_designation, emp_hier FROM employees;
方式2:使用EXISTS判断是否存在不匹配记录
这种方式只要发现任意一条不匹配的记录就会停止查询,在数据量较大时性能更优:
SELECT CASE WHEN EXISTS (SELECT 1 FROM (SELECT emp_id, emp_name, emp_designation, emp_hier FROM employees MINUS SELECT emp_id, emp_name, emp_designation, emp_hier FROM employee_admin)) THEN 'N' ELSE 'Y' END AS validated, emp_id, emp_name, emp_designation, emp_hier FROM employees;
说明
两种方式都会基于全局对比结果设置validated列的值:
- 当
employees表中所有记录都能在employee_admin表中找到完全匹配的行时,validated统一显示Y - 只要存在任意一条不匹配的记录,
validated就统一显示N
内容的提问来源于stack exchange,提问作者Velocity
相关产品推荐
相关产品推荐

