【发布时间】:2016-08-07 12:04:12
【问题描述】:
我有 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 年的关闭状态吗? 请提出建议。
【问题讨论】:
-
你的日期比较如果有问题,'April 2014'和'March 2016'是字符串,所以字符串比较认为'March' > 'April'。
标签: sql oracle11g oracle-sqldeveloper plsqldeveloper