有没有办法根据特定条件将两个联合查询组合成一个查询?
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'
我有 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'