合并结果递减的Toad SQL查询,同时获取全量与限制级结果
解决方案:合并递减结果集并支持全量/筛选查询
没问题,我帮你搞定这个Toad SQL的需求,既能把逐次递减的结果合并成一个列表,又能同时支持查看全量站点和更严格筛选的记录,具体方案如下:
1. 合并所有层级结果为单一列表
如果需要把全量站点、指定县站点(你的原有538条)、严格筛选站点这三组逐次递减的结果合并到一个列表里,方便一次性查看所有层级的数据,可以用UNION ALL来拼接查询,同时添加一个标识列区分层级:
-- 合并全量、指定县、严格筛选的结果为一个列表 SELECT '全量站点记录' AS RESULT_LEVEL, E_SITES.ID "SITE ID", E_SITES.NAME "SITE NAME", E_SITES.ADDR_1 "SITE ADDRESS", E_SITES.CITY_NAME || ', ' || E_SITES.STATE_CODE || ' ' || E_SITES.POSTAL_CODE AS "FULL ADDRESS", E_SITES.COUNTY_NAME FROM E_SITES UNION ALL SELECT '指定县站点记录' AS RESULT_LEVEL, E_SITES.ID "SITE ID", E_SITES.NAME "SITE NAME", E_SITES.ADDR_1 "SITE ADDRESS", E_SITES.CITY_NAME || ', ' || E_SITES.STATE_CODE || ' ' || E_SITES.POSTAL_CODE AS "FULL ADDRESS", E_SITES.COUNTY_NAME FROM E_SITES WHERE E_SITES.COUNTY_NAME IN ('ALLAMAKEE', 'BENTON', '...') -- 替换为你实际的县列表 UNION ALL SELECT '严格筛选站点记录' AS RESULT_LEVEL, E_SITES.ID "SITE ID", E_SITES.NAME "SITE NAME", E_SITES.ADDR_1 "SITE ADDRESS", E_SITES.CITY_NAME || ', ' || E_SITES.STATE_CODE || ' ' || E_SITES.POSTAL_CODE AS "FULL ADDRESS", E_SITES.COUNTY_NAME FROM E_SITES WHERE E_SITES.COUNTY_NAME IN ('ALLAMAKEE', 'BENTON', '...') AND E_SITES.POSTAL_CODE IS NOT NULL -- 示例严格筛选条件,可根据需求修改 AND E_SITES.ADDR_1 IS NOT NULL ORDER BY RESULT_LEVEL, "SITE ID";
这个方案的优势:
- 三组结果会合并成一个列表,结果数量逐次递减(全量 > 指定县 > 严格筛选)
RESULT_LEVEL列能让你快速识别每条记录属于哪个筛选层级- 最后按层级和站点ID排序,结果规整易读
2. 动态切换查看指定层级记录
如果不想一次性查看所有结果,而是需要灵活切换查看全量、指定县或严格筛选的记录,可以用Toad的绑定变量功能,只需要一条SQL就能实现:
-- 动态切换筛选层级的查询(Toad中会弹出输入框) SELECT E_SITES.ID "SITE ID", E_SITES.NAME "SITE NAME", E_SITES.ADDR_1 "SITE ADDRESS", E_SITES.CITY_NAME || ', ' || E_SITES.STATE_CODE || ' ' || E_SITES.POSTAL_CODE AS "FULL ADDRESS", E_SITES.COUNTY_NAME FROM E_SITES WHERE CASE :SELECTION_LEVEL WHEN '全量' THEN 1 WHEN '指定县' THEN CASE WHEN E_SITES.COUNTY_NAME IN ('ALLAMAKEE', 'BENTON', '...') THEN 1 ELSE 0 END WHEN '严格筛选' THEN CASE WHEN E_SITES.COUNTY_NAME IN ('ALLAMAKEE', 'BENTON', '...') AND E_SITES.POSTAL_CODE IS NOT NULL AND E_SITES.ADDR_1 IS NOT NULL THEN 1 ELSE 0 END END = 1 ORDER BY "SITE ID";
使用方法:
- 在Toad中运行这条SQL时,会弹出输入框让你输入
SELECTION_LEVEL的值 - 输入
全量就返回所有站点,输入指定县返回你的原有538条记录,输入严格筛选返回满足更严格条件的记录
内容的提问来源于stack exchange,提问作者Kevin C
相关产品推荐
相关产品推荐

