SELECT * FROM (
SELECT 'a' AS a , 1 AS b FROM dual
UNION ALL
SELECT 'a' AS a , 2 AS b FROM dual
UNION ALL
SELECT 'b' AS a , 2 AS b FROM dual
UNION ALL
SELECT 'b' AS a , 1 AS b FROM dual
) a
ORDER BY (CASE WHEN a.a = 'a' THEN 't' ELSE 'd' END ) + a.b这里很奇怪,去掉红色的部分就可以正常运行。 此例应该如何改才能排序出
b,1
b,2
a,1
a,2
1 要求在order by 子句里面用到 case when
2 除了 order by a desc , b 这个答案。
解决方案 »
- ORACLE返回sys_refcursor的问题
- 如何将INSERT语句存放到SQL脚本并使用替代变量为表插入数据,急!
- oralce 如何留后门?
- 游标问题??
- 存储过程调用后,怎么取CURSOR里面的数据?
- 紧急求助:我用job删除分区将表的主索引破坏了,怎么恢复分区表的主索引呢?谢谢
- Oracle函数可以返回结果集吗?类似SQL SERVER的Table类型。
- 小问题,速结帖!
- 能不能实现两个表之间的转换?
- (在线等)请问在ORACLE中怎样定义数组,定义后怎样给数组附值?
- oracle alter database open一直卡在那不动,日志也没报错
- oracle sql如何实现 nvarchar2字段类型转换,计算时间
SELECT * FROM (
SELECT 'a' AS a , 1 AS b FROM dual
UNION ALL
SELECT 'a' AS a , 2 AS b FROM dual
UNION ALL
SELECT 'b' AS a , 2 AS b FROM dual
UNION ALL
SELECT 'b' AS a , 1 AS b FROM dual
) a
ORDER BY (CASE WHEN a.a = 'a' THEN 2 ELSE 1 END)+a.b