0

我有一个如下的sql查询

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

列的可能值是 X、Y 和 Z。

我想修改查询,如果查询返回多个值,如下所示

例如:X,Y 或 X,Z 或 Y,Z 或 X,Y,Z

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

对于 X,Y -> 我需要
为 Y,Z 返回 X -> 我需要
为 X,Z 返回 Y -> 我需要返回 X

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

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

4

1 回答 1

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:-“列”是无效的标识符,无法作为列名

于 2013-06-24T10:37:42.537 回答