如何运行SQL查询多次,结果合并成单一的输出?

问题描述 投票:1回答:2

我有存储在Excel 2500 OBJ号码,我需要运行SQL下面的列表:

SELECT    
    a.objno,
    a.table_comment,
    b.queue_comment
FROM
    aq$_queue_tables a 
JOIN 
    AQ$_QUEUES b ON a.objno = b.table_objno
WHERE
    a.objno = 19551;

有什么办法,我可以写从列表或从不同的表objno喂养对上面的SQL的循环?我也想存储/生产全部由运行作为一个单一的输出每个循环的结果。

我认为选择的号码上传到一个新表并添加一个WHERE条件:

a.objno=(SELECT newtab.objectno FROM newtab);

不过,我会在查询中编写逻辑将排除某些objectno结果。比方说,相关objectno有一定queue_comment与该objectno相关的某些日期。我并不想拉这个纪录。这种情况会匹配一些objectno并不会与其他人相匹配。有了这样的条件,运行查询针对所有objectno正在返回0的结果。我不能共享原始的逻辑,因为它会显示一定的业务规则,这将是违反一些政策的。

所以,我需要单独运行每个objectno查询并合并结果。

我完全新的SQL和分配了这项任务。我知道正规循环的,在SQL,但我不认为我可以在这种情况下应用它们。

任何指导或引用链接到有用的主题是非常赞赏为好。

先谢谢您的帮助。

sql excel oracle oracle-sqldeveloper
2个回答
1
投票

一种选择是从Excel工作表对象号上传到数据库中的表和运行查询如下。假设NEWTAB是其中objectno上传该表。

SELECT    
a.objno,
a.table_comment,
b.queue_comment

FROM
    aq$_queue_tables a JOIN AQ$_QUEUES b on a.objno = b.table_objno
WHERE
    a.objno IN (SELECT newtab.objectno FROM newtab);

我在这里使用子查询,加入到含水$可以正常工作。


0
投票

阅读注释和所有我认为你需要,以提高您的Excel额外的2列载到新表。

在可得如下方式使用:

SELECT    
    a.objno,
    a.table_comment,
    b.queue_comment
FROM
    aq$_queue_tables a 
JOIN 
    AQ$_QUEUES b ON a.objno = b.table_objno
WHERE
    (a.objno,a.table_comment,b.queue_comment) IN  (19551,'something','something');

所以与新表将是:

 WHERE
        (a.objno,a.table_comment,b.queue_comment) IN 
        (select n.objno, n.table_comment, n.queue_comment from new_table n)
© www.soinside.com 2019 - 2024. All rights reserved.