使用区分查询时查询选择行

时间:2019-11-20 17:54:20

标签: sql oracle11g

我想执行以下操作。

让我们说数据看起来像这样

Number  letter  
1        b      
1        c      
1        a       
2        d       
2        b        
2        c
3        a
3        b
3        c 

我想按以下方式对数据进行过滤以获取所有不同的数字,然后还要过滤出字母d

输出应该如下

Number letter 
1     
2 
2       d
3

这可能吗?

我可以在两个表中执行此操作,但是我想知道是否有可能将其合并为一个表

谢谢

克里斯

2 个答案:

答案 0 :(得分:0)

这应该做到:

select distinct number, case when letter = 'd' then 'd' end letter from mytable

在Oracle中,您可以使用decode来缩短查询时间:

select distinct number, decode(letter, 'd', 'd') letter from mytable

答案 1 :(得分:0)

union all怎么样?

select distinct number, null as letter
from t
union all
select number, 'd'
from t
where letter = 'd';