求解,Oracle查询时,如何让特定的记录显示在最前面
时间:2011-11-03
来源:互联网
id | tranType | raiseAmt | tranState
1 | 02 | 1000.00 | 1
2 | 02 | 1000.00 | 2
3 | 02 | 1000.00 | 1
4 | 02 | 1000.00 | 3
5 | 02 | 1000.00 | 1
tranState(交易状态): 2成功 3失败 1未明
我想实现查询这张表的所有记录,让交易状态为失败和未明的记录显示在最前面。
请问在Oracle里该怎样些SQL语句?
作者: wlj19901115001 发布时间: 2011-11-03
select '2' as id, '02' as tranType, '1000.00' as raiseAmt, '2' as tranState from dual union
select '3' as id, '02' as tranType, '1000.00' as raiseAmt, '1' as tranState from dual union
select '4' as id, '02' as tranType, '1000.00' as raiseAmt, '3' as tranState from dual union
select '5' as id, '02' as trantype, '1000.00' as raiseamt, '1' as transtate from dual
) select id, trantype, raiseamt, transtate
from a
order by decode(transtate, '1', '1', '3', '0', '2', '2');
作者: yixilan 发布时间: 2011-11-03
with t as ( select 1 a, 1000.00 b, 1 c from dual union all select 2 ,1000.00, 2 from dual union all select 3 , 1000.00, 1 from dual union all select 4 , 1000.00, 3 from dual union all select 5 , 1000.00,1 from dual ) select a,b,c from t order by mod(c,2) desc,a --result: 1 1000 1 3 1000 1 4 1000 3 5 1000 1 2 1000 2
作者: cosio 发布时间: 2011-11-03
SQL code
with t as
(
select 1 a, 1000.00 b, 1 c from dual
union all
select 2 ,1000.00, 2 from dual
union all
select 3 , 1000.00, 1 from dual
union all
select 4 , 1000.00, ……
能不能说说这是什么意思?
作者: wlj19901115001 发布时间: 2011-11-03
难道没有一种方法,可以让指定的几个交易状态的记录优先显示在前面吗?
作者: wlj19901115001 发布时间: 2011-11-03
我读懂上面两位的代码了,但是交易状态不止3个,还有5、6、7、8、9,状态为2的放在最下面,其他状态的记录在最上面,这时候该怎么处理?
难道没有一种方法,可以让指定的几个交易状态的记录优先显示在前面吗?
把3和1的优先级设为0和1,2的优先级设成最大值999,其他的默认为50.。。
decode(tranState, '3', '0', '1', '1', '2', '999', '50')
排序即可。
作者: yixilan 发布时间: 2011-11-03
引用 4 楼 wlj19901115001 的回复:
我读懂上面两位的代码了,但是交易状态不止3个,还有5、6、7、8、9,状态为2的放在最下面,其他状态的记录在最上面,这时候该怎么处理?
难道没有一种方法,可以让指定的几个交易状态的记录优先显示在前面吗?
把3和1的优先级设为0和1,2的优先级设成最大值999,其他的默认为50.。。
decode(tranState, '3', '0……
哦,明白你的意思了,真是太感谢了,这都是技巧啊,我还以为Oracle强大到什么函数都有,一个函数就解决了呢!!
作者: wlj19901115001 发布时间: 2011-11-03
with t as ( select 1 a, 1000.00 b, 1 c from dual union all select 2 ,1000.00, 2 from dual union all select 3 , 1000.00, 1 from dual union all select 4 , 1000.00, 3 from dual union all select 5 , 1000.00,1 from dual ) select a,b,c from t order by mod(c,2) desc,c desc
我是这样处理的,也实现了同样的效果;
作者: wlj19901115001 发布时间: 2011-11-03
我也教你一个
ORDER BY DECODE(TRANSTATE, 2, NULL, TRANSTATE) DESC NULLS LAST
SQL code
[SYS@myoracle] SQL>with a as (select '1' as id, '02' as trantype, '1000.00' as raiseamt, '1' as transtate from dual union 2 select '2' as id, '02' as tranType, '1000.00' as raiseAmt, '2' as tranState from dual union 3 select '3' as id, '02' as tranType, '1000.00' as raiseAmt, '1' as tranState from dual union 4 select '4' as id, '02' as tranType, '1000.00' as raiseAmt, '3' as tranState from dual union 5 select '5' as id, '02' as trantype, '1000.00' as raiseamt, '1' as transtate from dual 6 ) SELECT ID, TRANTYPE, RAISEAMT, TRANSTATE 7 FROM A 8 ORDER BY DECODE(TRANSTATE, 2, NULL, TRANSTATE) DESC NULLS LAST 9 ; I TR RAISEAM T - -- ------- - 4 02 1000.00 3 5 02 1000.00 1 1 02 1000.00 1 3 02 1000.00 1 2 02 1000.00 2
作者: BenChiM888 发布时间: 2011-11-03
我也教你一个
ORDER BY DECODE(TRANSTATE, 2, NULL, TRANSTATE) DESC NULLS LAST
SQL code
[SYS@myoracle] SQL>with a as (select '1' as id, '02' as trantype, '1000.00' as raiseamt, '1' as transtate from d……
妈呀,神人出现了,媳妇儿,快出来观摩神人!!
作者: wlj19901115001 发布时间: 2011-11-03
--快,大家都来学习!
作者: cosio 发布时间: 2011-11-03
作者: developer2002 发布时间: 2011-11-03
---创建临时表 with t as( select 1,02,1000.0,1 from dual union all select 2,02,1000.0,2 from dual union all select 3,02,1000.0,1 from dual union all select 4,02,1000.0, 1 from dual union all select 5,02,1000,0,1 from dual ) ---查询 select id,trantype,raiseamt,transtate from a order by decode(transtate,2,null,transtate) desc
作者: lzd_83 发布时间: 2011-11-03
排序啊。基础的问题。
呵呵,我基础不太好,向各位哥哥姐姐学习,这个帖子收藏了!
作者: wlj19901115001 发布时间: 2011-11-03
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28