Oracle 如何从同一输出窗口中的两个查询中获得结果?

Oracle 如何从同一输出窗口中的两个查询中获得结果?,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我需要在一个输出窗口中同时输出以下两个查询 查询1 SELECT C.SERVICENAME, C.SERVICEID , B.SOAPIN, B.SOAPOUT, A.TIMESTAMP FROM Schema1.LG_LOGENTRIES A, Schema1.LG_SOAPREQUESTS B, Schema1.CFG_SOAPSERVICES C WHERE B.SERVICEID =C.SERVICEID AND C.SERVICENAME <>'UploadAndPre

我需要在一个输出窗口中同时输出以下两个查询

查询1

SELECT C.SERVICENAME, C.SERVICEID , B.SOAPIN, B.SOAPOUT, A.TIMESTAMP
FROM Schema1.LG_LOGENTRIES A, Schema1.LG_SOAPREQUESTS B, Schema1.CFG_SOAPSERVICES C
WHERE B.SERVICEID =C.SERVICEID AND 
C.SERVICENAME <>'UploadAndPrepareDocumentEx1__sdweb_services_preload' AND
A.ID=B.LOGENTRYID 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(TO_CHAR('CGBXGVSG')));

联合可能是一种选择,但你必须这样做

  • 统一两个列列表(即,它们必须返回相同数量的列,这些列必须具有相同的数据类型),这意味着您必须将某些空列添加到两个查询中
  • 包括额外的标识符,以便您知道哪个SELECT返回了哪些值
如果你想让他们肩并肩,那可不容易。大声思考:你必须有一个列来连接这些值。这些选择将是内联视图。您可以使用聚合函数(如MAX)和解码(或CASE)从两个查询中选择值。简:太痛了

现在,你为什么要这么做?两扇并列的窗户怎么了

[编辑]显示联合的示例

select c.servicename, c.serviceid, b.soapin, b.soapout, a.timestamp, to_char(null), to_char(null), to_char(null)  , to_number(null), to_char(null), to_char(null)
from ... the rest of your 1st query
union
select null         , null       , null    , null     , a.timestamp, b.jsonin     , b.jsonout    , b.event_message, a.processid    , a.status     , a.servername 
from ... the rest of your 2nd query

使用F5运行-您将在脚本面板中获得两个查询的输出

我谈论这两者之间的区别


由于两个查询的元素看起来互不相关,我建议您可以使用SQL*Plus将两个查询的输出假脱机到单个文件中。如果您确实有任何其他不明显的关系,您可以让我们知道。如果您使用的是RapidSQL,您可以选择两个查询并同时运行,结果将显示在同一个窗口中;这有点像在SQLPlus中执行两个连续的SELECT语句,不是吗?希望这就是OP想要的。我只是不明白,就像你说的,用SQL*plus连续运行语句,这是一个很好的知识。但是我需要在一个网格中同时得到两个结果,然后请修改你的问题,这样就清楚了。并将上面的答案标记为正确。要做您想要做的事情,唯一的方法是将其作为单个查询运行,您可能需要使用一个联合来完成。或者如果数据是相关的,考虑一个简单的连接。我需要在一个窗口中同时显示两个结果,因为两个查询都会获取相同操作的日志。我希望结果是sort wrt timestamp,所以,我想,那应该是UNION。在这种情况下,你也能帮我一下吗,因为我无法得到它。我编辑了我的消息,显示了它可能是什么样子。我试着把相同的栏目放在另一个栏目下,这样你更容易看到这个想法(这会迫使你向右滚动;对此我很抱歉)。因为我不知道这些列的数据类型,所以我习惯于使用CHAR(NULL)和NUMBER(NULL)-很可能您必须解决这个问题。哦,是的-另一点:您不能将这两个查询合并为一个查询吗?基本上,您必须将第二个查询中的LG_事件包含到第一个查询中,并将其与其他表正确连接。
select c.servicename, c.serviceid, b.soapin, b.soapout, a.timestamp, to_char(null), to_char(null), to_char(null)  , to_number(null), to_char(null), to_char(null)
from ... the rest of your 1st query
union
select null         , null       , null    , null     , a.timestamp, b.jsonin     , b.jsonout    , b.event_message, a.processid    , a.status     , a.servername 
from ... the rest of your 2nd query