sql - 带有多个选择语句的oracle中的LISTAGG
问题描述
我有以下查询
SELECT LISTAGG(contract, ',')
WITHIN GROUP (ORDER BY contract) "CONTRACT_LIST"
FROM Site_TAB
WHERE C_Ecom_Util_API.Is_Web_DC(contract) = 'TRUE'
输出如下图
我有另一个查询是
SELECT contract
FROM company_site_cfv
WHERE cf$_site_type_db = 'CENTRAL'
输出如下。
有什么简单的方法可以写这个,以便我可以得到最终输出为 908,918,901?
任何帮助深表感谢
解决方案
您可以尝试以下方法:
- 使用前合并两个查询
LISTAGG
SELECT
LISTAGG(contract, ',')
WITHIN GROUP (ORDER BY contract) "CONTRACT_LIST"
FROM (
SELECT contract
FROM Site_TAB
WHERE C_Ecom_Util_API.Is_Web_DC(contract) = 'TRUE'
UNION ALL
SELECT contract
FROM company_site_cfv
WHERE cf$_site_type_db = 'CENTRAL'
) t
- 由于示例中所示的两个查询都产生了一条记录。您可以 CONCAT 交叉连接的结果,例如
SELECT
t1."CONTRACT_LIST" || "," || t2.contract AS "CONTRACT_LIST"
FROM
(
SELECT LISTAGG(contract, ',')
WITHIN GROUP (ORDER BY contract) "CONTRACT_LIST"
FROM Site_TAB
WHERE C_Ecom_Util_API.Is_Web_DC(contract) = 'TRUE'
) t1
CROSS JOIN (
SELECT contract
FROM company_site_cfv
WHERE cf$_site_type_db = 'CENTRAL'
) t2
让我知道这是否适合您。
推荐阅读
- mysql - 如何获取MYSQL中多个相关表中至少一个表中的数据
- python - 在数据结构上使用记忆的递归
- python - 让 CairoSVG 识别 URL 中的本地图像
- python - 交换列表的功能正在更改迭代内的内容
- android - 在 Realm `addchangelistener` 中知道元素在哪个位置被插入/更新/删除?
- python - 合并df:没有错误,但只输出标题行
- javascript - 将当前登录的用户附加到 JSON 文件
- mysql - MySQL PDO 查询未显示过程输出变量
- javascript - 使用 mysql 和 php 从数据库中获取数据 - 特殊字符
- javascript - 在 ReactJS 中访问文件之间的状态