在sql运行时过滤列

时间:2013-06-24 10:28:56

标签: sql oracle

我有一个SQL查询,如下所示

  

从表a中选择不同的NVL(a.column,'EMPTY')列,其中a.POSTCODE ='MNOP')

列的可能值为X,Y和Z。

我想以这样的方式修改查询:如果查询返回多个值,如下所示

  

Ex:X,Y或X,Z或Y,Z或X,Y,Z

然后我想只返回一个值,如下所示

  

表示X,Y - >我需要返回X
  对于Y,Z - >;我需要回Y   对于X,Z - >我需要返回X

     

(优先级从X到Z,顺序相同)

我正在尝试在子查询中使用count(*)和其他一些组合,到目前为止还没有成功。任何帮助都会很棒

1 个答案:

答案 0 :(得分:0)

您可以使用rownum伪列来获取结果集的第一行。按列升序排序,你就是

select * from mytable 
where rownum=1
order by mycol ;

在您的情况下,请尝试此操作以检索所需的列

Select distinct NVL(a.column,'EMPTY') column 
from table a 
where a.POSTCODE ='MNOP'
and rownum=1
order by a.column

PS: - “column”是一个无效的标识符,作为列名