Oracle中使用LISTAGG合并多SELECT语句查询结果的实现咨询
解决方案
直接将两个查询的结果用UNION ALL合并为一个数据集后,再整体执行LISTAGG聚合即可,写法如下:
SELECT LISTAGG(contract, ',') WITHIN GROUP (ORDER BY contract) "CONTRACT_LIST" FROM ( -- 取第一个查询的所有符合条件的contract SELECT contract FROM Site_TAB WHERE C_Ecom_Util_API.Is_Web_DC(contract) = 'TRUE' UNION ALL -- 取第二个查询的所有符合条件的contract SELECT contract FROM company_site_cfv WHERE cf$_site_type_db = 'CENTRAL' ) combined_contracts;
补充说明
- 如果两个查询结果可能存在重复的contract值,需要去重的话,把
UNION ALL替换为UNION即可 - 当前场景下两个查询无重复结果,使用
UNION ALL性能更优,执行后输出结果就是你需要的908,918,901
内容的提问来源于stack exchange,提问作者Shanka Somasiri
相关产品推荐
相关产品推荐

