我有一张桌子基本上就像这样:
Date | Criteria
12-04-2016 123
12-05-2016 1234
...
现在,我想在列'标准'中选择具有值的行。在给定范围内,但我想保留提取的行。提取的行应该得到值' null'对于列标准'。例如,如果我想选择' Criteria = 123'我的结果应该是这样的:
Date | Criteria
12-04-2016 123
12-05-2016 null
目前我正在使用此查询来获取结果:
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
有人告诉我,全外连接表现非常糟糕。另外,我的表有400000条记录,并且经常使用查询。所以任何人都有想加快我的查询?顺便说一下,我正在使用Oracle11g数据库。
答案 0 :(得分:5)
你只想要case
表达吗?
SELECT date,
(case when criteria > 100 and criteria < 200 then criteria end) as criteria
FROM ABC;