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

Is there a way to combine two union queries into one single query based on particular conditions?

我有 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 年的关闭状态吗? 请提出建议。

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

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'