Mat*_*ton 2 sql oracle oracle11g
我有一张基本上看起来像这样的表:
Date | Criteria
12-04-2016 123
12-05-2016 1234
...
Run Code Online (Sandbox Code Playgroud)
现在我想在给定范围内的"Criteria"列中选择具有值的行,但我想保留提取的行.提取的行应该为"Criteria"列获取值"null".例如,如果我想选择'Criteria = 123'的行,我的结果应如下所示:
Date | Criteria
12-04-2016 123
12-05-2016 null
Run Code Online (Sandbox Code Playgroud)
目前我正在使用此查询来获取结果:
SELECT b.date, a.criteria
FROM (SELECT id, date, criteria FROM ABC WHERE criteria > 100 and criteria < 200) a
FULL OUTER JOIN ABC b ON a.id = b.id ORDER BY a.criteria
Run Code Online (Sandbox Code Playgroud)
有人告诉我,全外连接表现非常糟糕.另外,我的表有400000条记录,并且经常使用查询.所以任何人都有想加快我的查询?顺便说一下,我使用的是Oracle11g数据库.
你想要case表达吗?
SELECT date,
(case when criteria > 100 and criteria < 200 then criteria end) as criteria
FROM ABC;
Run Code Online (Sandbox Code Playgroud)