简单的WHERE子句但保持提取的行并填充它们将为null值

时间:2016-09-29 11:50:04

标签: sql oracle oracle11g

我有一张桌子基本上就像这样:

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数据库。

1 个答案:

答案 0 :(得分:5)

你只想要case表达吗?

SELECT date,
       (case when criteria > 100 and criteria < 200 then criteria end) as criteria
FROM ABC;