有没有办法根据特定条件将两个联合查询组合成一个查询?

时间:2016-04-15 13:25:04

标签: sql oracle11g oracle-sqldeveloper plsqldeveloper

我有2张格式低于

的表格
     TableA                             TableB
ID1  Name    Date                    ID1   Status
1    abc   April 2000                1     open
2    xyz   May 2000                  2     closed
3    def   March 2016                3     closed
4    pqr   March 2016                4     open

使用以下查询

SELECT a.id1,
       a.name,
       a.date,
       b.status
FROM TableA a
JOIN TableB b ON a.id1=b.id2
AND b.status='open'
UNION
SELECT a.id1,
       a.name,
       a.date,
       b.status
FROM TableA a
JOIN TableB b ON a.id1=b.id2
AND b.status='closed'
AND a.date>'April 2014'

我得到以下结果集

a.id1  a.name  a.date       b.status
1      abc     April 2000   open
3      def     March 2016   closed
4      pqr     March 2016    open

我的目的是显示给定ID的所有未结状态和最近2年的已关闭状态。 所以我的问题是,我们可以在一个查询中编写此查询以获得所有开放和最近2年的关闭状态吗? 请建议。

1 个答案:

答案 0 :(得分:2)

我在单个查询中重写了您的查询。

select a.id1, a.name, a.date, b.status
  from TableA a
  join TableB b
    on a.id1 = b.id2
 where (b.status = 'closed' and a.date > 'April 2014')
    or b.status = 'open'