我有下面的场景(下表),我想根据它们是否为NULL来选择'X'或'Y'。Oracle UNION ALL在查询中保留记录的顺序
X Y pick
null not null Y
not null not null X
not null null X
包含数据的 'X' 和 'Y' 或UNION行ALLed象下面这样:
select 'X' as a
union all
select 'Y' as a
所以,我想,得到了下面的SQL,但不知道的“ROWNUM < = 1 “部分。如果UNION ALL保留 我查询两行的顺序,这将起作用(对于X和Y都不为空的情况)。
select a from
(
select 'X' as a
union all
select 'Y' as a
) where a is not null and rownum<=1;
select a from
(
select null as a
union all
select 'Y' as a
) where a is not null and rownum<=1;
select a from
(
select 'X' as a
union all
select null as a
) where a is not null and rownum<=1;
是上述正确的方式去做这件事吗?任何有识之士将不胜感激
2011-08-01
komedit1
+1
“UNION”或“UNION ALL”的结果是一个集合。集*没有*订单。即使你在简单的测试中观察到明显的顺序,你也不应该依赖这样的命令。 –