You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一输出窗口获取两个SQL查询的结果?

嘿,要把这两个查询的结果同时展示在一个输出窗口,有两种实用的方法,看你需求来选:

方法1:在SQL客户端中同时执行两个查询(最常用)

大多数主流SQL客户端(比如PL/SQL Developer、DBeaver、SQL Developer等)都支持在同一个脚本里执行多个查询,执行后会自动在输出窗口分标签或者分区展示两个结果集。你直接把下面两个查询放在同一个脚本里运行就行:

查询1:SOAP服务日志

SELECT 
    C.SERVICENAME, 
    C.SERVICEID, 
    B.SOAPIN, 
    B.SOAPOUT, 
    A.TIMESTAMP 
FROM Schema1.LG_LOGENTRIES A
JOIN Schema1.LG_SOAPREQUESTS B ON A.ID = B.LOGENTRYID
JOIN Schema1.CFG_SOAPSERVICES C ON B.SERVICEID = C.SERVICEID
WHERE 
    C.SERVICENAME <> 'UploadAndPrepareDocumentEx1__sdweb_services_preload'
    AND B.TIMESTAMP BETWEEN TO_DATE('02/01/2018 11:55:00','dd/mm/yyyy hh24:mi:ss') 
                        AND TO_DATE('02/01/2018 12:03:59','dd/mm/yyyy hh24:mi:ss')
    AND A.USERID IN (SELECT ID FROM Schema1.CFG_USERS WHERE NAME = UPPER('CGBXGVSG'));

(注:我把原来的隐式JOIN改成了显式JOIN,可读性更好,逻辑完全一致)

查询2:事件日志

SELECT 
    B.JSONIN, 
    B.JSONOUT, 
    A.TIMESTAMP, 
    B.EVENT_MESSAGE, 
    A.PROCESSID, 
    A.status, 
    A.SERVERNAME 
FROM Schema1.LG_LOGENTRIES A
JOIN Schema1.LG_EVENT B ON A.ID = B.LOG_ENTRYID
WHERE 
    B.EVENT_MESSAGE NOT IN ('getFileImage','submitBase64','loadDocumentToSign','getRefData')
    AND B.TIMESTAMP BETWEEN TO_DATE('31/12/2017 13:43:00','dd/mm/yyyy hh24:mi:ss') 
                        AND TO_DATE('31/12/2017 13:53:59','dd/mm/yyyy hh24:mi:ss')
    AND A.USERID IN (SELECT ID FROM Schema1.CFG_USERS WHERE NAME = UPPER('CTHX8Y2G'));
方法2:合并为单个结果集(如果需要统一展示)

如果你的客户端不支持多结果集展示,或者你希望把两个结果放在同一张表里,那可以通过补全对方缺失的列(用NULL填充),再用UNION ALL合并:

-- 第一个查询补全第二个查询的列
SELECT 
    C.SERVICENAME, 
    C.SERVICEID, 
    B.SOAPIN, 
    B.SOAPOUT, 
    A.TIMESTAMP,
    NULL AS JSONIN,
    NULL AS JSONOUT,
    NULL AS EVENT_MESSAGE,
    NULL AS PROCESSID,
    NULL AS status,
    NULL AS SERVERNAME,
    'SOAP_SERVICE_LOG' AS LOG_TYPE -- 加个标识区分两类日志
FROM Schema1.LG_LOGENTRIES A
JOIN Schema1.LG_SOAPREQUESTS B ON A.ID = B.LOGENTRYID
JOIN Schema1.CFG_SOAPSERVICES C ON B.SERVICEID = C.SERVICEID
WHERE 
    C.SERVICENAME <> 'UploadAndPrepareDocumentEx1__sdweb_services_preload'
    AND B.TIMESTAMP BETWEEN TO_DATE('02/01/2018 11:55:00','dd/mm/yyyy hh24:mi:ss') 
                        AND TO_DATE('02/01/2018 12:03:59','dd/mm/yyyy hh24:mi:ss')
    AND A.USERID IN (SELECT ID FROM Schema1.CFG_USERS WHERE NAME = UPPER('CGBXGVSG'))

UNION ALL

-- 第二个查询补全第一个查询的列
SELECT 
    NULL AS SERVICENAME,
    NULL AS SERVICEID,
    NULL AS SOAPIN,
    NULL AS SOAPOUT,
    A.TIMESTAMP,
    B.JSONIN,
    B.JSONOUT,
    B.EVENT_MESSAGE,
    A.PROCESSID,
    A.status,
    A.SERVERNAME,
    'EVENT_LOG' AS LOG_TYPE -- 加个标识区分两类日志
FROM Schema1.LG_LOGENTRIES A
JOIN Schema1.LG_EVENT B ON A.ID = B.LOG_ENTRYID
WHERE 
    B.EVENT_MESSAGE NOT IN ('getFileImage','submitBase64','loadDocumentToSign','getRefData')
    AND B.TIMESTAMP BETWEEN TO_DATE('31/12/2017 13:43:00','dd/mm/yyyy hh24:mi:ss') 
                        AND TO_DATE('31/12/2017 13:53:59','dd/mm/yyyy hh24:mi:ss')
    AND A.USERID IN (SELECT ID FROM Schema1.CFG_USERS WHERE NAME = UPPER('CTHX8Y2G'));

这样合并后的结果集会包含所有列,用LOG_TYPE字段来区分是SOAP服务日志还是普通事件日志,方便你查看。

内容的提问来源于stack exchange,提问作者Pawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:54:17