壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7424|回复: 3

[Oracle数据库] SQL 指定字符排序问题

[复制链接]
发表于 2011/8/6 17:14:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 shunfengfan 于 2011/8/6 17:22 编辑


使用plsql查询出如下结果
其他.jpg
想把图中圈中的“财务费用.其他”放在结果的最后面显示出来,怎么写代码呢?
代码如下:


  1. Select a.Flex_Value, a.Flex_Value_Meaning, a.Description
  2.         From (Select Fls.Flex_Value, Fls.Flex_Value_Meaning, Fls.Description
  3.                  From Fnd_Flex_Value_Sets Flv, Fnd_Flex_Values_Vl Fls
  4.                 Where Flv.Flex_Value_Set_Id = Fls.Flex_Value_Set_Id
  5.                   And Flv.Flex_Value_Set_Name = 'RG_子目段'
  6.                   And Sysdate Between Nvl(Fls.Start_Date_Active, Sysdate - 1) And
  7.                       Nvl(Fls.End_Date_Active, Sysdate + 1)
  8.                   And Fls.Enabled_Flag = 'Y'
  9.                      -- And Substr(Fls.Flex_Value, 1, 3) = '004';
  10.                   And Fls.Flex_Value In ('00407',
  11.                                          '00403',
  12.                                          '00402',
  13.                                          '00401',
  14.                                          '00412',
  15.                                          '00424',
  16.                                          '00418',
  17.                                          '00448',
  18.                                          '00411',
  19.                                          '00409',
  20.                                          '00421',
  21.                                          '00413',
  22.                                          '00420',
  23.                                          '00417',
  24.                                          '00434',
  25.                                          '00449',
  26.                                          '00406',
  27.                                          '00435',
  28.                                          '00405',
  29.                                          '00480')
  30.                
  31.                Union All
  32.                Select Null Flex_Value, '1' Flex_Value_Meaning,
  33.                       '小计' Description
  34.                  From Dual
  35.                Union All
  36.                Select '(科目)' Flex_Value, '2' Flex_Value_Meaning,
  37.                       '00000三、财务费用' Description
  38.                  From Dual
  39.                Union All
  40.                Select Fls.Flex_Value, Fls.Flex_Value_Meaning, Fls.Description
  41.                  From Fnd_Flex_Value_Sets Flv, Fnd_Flex_Values_Vl Fls
  42.                 Where Flv.Flex_Value_Set_Id = Fls.Flex_Value_Set_Id
  43.                   And Flv.Flex_Value_Set_Name = 'RG_科目段'
  44.                   And Sysdate Between Nvl(Fls.Start_Date_Active, Sysdate - 1) And
  45.                       Nvl(Fls.End_Date_Active, Sysdate + 1)
  46.                   And Fls.Enabled_Flag = 'Y'
  47.                   And Fls.Flex_Value In ('550304',
  48.                                          '55030501',
  49.                                          '55030506',
  50.                                          '55030504',
  51.                                          '55030505',
  52.                                          '55030502',
  53.                                          '550301',
  54.                                          '550302',
  55.                                          '550306',
  56.                                          '550303')
  57.                  
  58.            
  59.        )a  Order By 2;
复制代码
想法1:我刚开始在select中单独使用order by case when,代码如下:
  1. Select Fls.Flex_Value, Fls.Flex_Value_Meaning, Fls.Description
  2. From Fnd_Flex_Value_Sets Flv, Fnd_Flex_Values_Vl Fls
  3. Where Flv.Flex_Value_Set_Id = Fls.Flex_Value_Set_Id
  4. And Flv.Flex_Value_Set_Name = 'RG_科目段'
  5. And Sysdate Between Nvl(Fls.Start_Date_Active, Sysdate - 1) And
  6. Nvl(Fls.End_Date_Active, Sysdate + 1)
  7. And Fls.Enabled_Flag = 'Y'
  8. And Fls.Flex_Value In ('550304',
  9. '55030501',
  10. '55030506',
  11. '55030504',
  12. '55030505',
  13. '55030502',
  14. '550301',
  15. '550302',
  16. '550306',
  17. '550303')

  18. Order By Case
  19. When Fls.Description = '财务费用.其它' Then
  20. 1
  21. Else
  22. 0
  23. End
复制代码
这样可以查询出想要的顺序结果,

其他1.jpg

但是把order by case when放在嵌套的select中却报错:

其他2.jpg
发表于 2011/8/19 10:47:41 | 显示全部楼层
你可以 select XX,decode(fls.description,'财务费用.其他',0,1) order by decode(fls.description,'财务费用.其他',0,1)
这样不可以吗 ?
 楼主| 发表于 2011/8/19 17:54:33 | 显示全部楼层
Iforit 发表于 2011/8/19 10:47
你可以 select XX,decode(fls.description,'财务费用.其他',0,1) order by decode(fls.description,' ...

我试了下你的办法,还是不行,和我的方法的错误一样的……
发表于 2011/9/8 12:01:39 | 显示全部楼层
学习了,very good
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 15:09 , Processed in 0.017478 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表