oracle 条件排序,Oracle按不同条件排序

我有一个查询,我想根据条件进行两种排序。Oracle按不同条件排序

例如,如果一个字段为NULL,我需要作出一个命令,如果它不是,我不得不做另一个命令。我怎么能做到这一点?

select *

from table_1 t

order by (if t.field1 is null then

order by t.field2 DESC, field3 ASC

else

order by t.field4 ASC, field5 DESC)

这是一个示例代码:我想使不同的顺序(ASC/DESC和不同列)的基础上,FIELD1的值

有条件

ID FIELD1 FIELD2 FIELD3 FIELD4 FIELD5

1 1 2 3 4 5

2 NULL 6 7 8 9

DATA

ID PARENT_ID DATA1 DATA2 DATA3

1 1 X Y J

2 1 Z W U

3 2 XY YX O

4 2 ZW WZ I

select d.*

from data d, conditional c

where d.parent_id = c.id

and d.parent_id = 1

order by

case

when c.field1 is null then

data1 asc, data2 desc

else

data3 asc, data1 desc

end

在这个例子中,我选择了数据行ONE和TWO(父行id = 1的行)。 现在我已经做出了这个决定,我想根据CONDICTIONAL.FIELD1列的值来选择DATA列。我希望现在更加干净。

确定此查询确实有效,但这是“我需要的。”

2014-09-25

Mistre83

+0

你可以给出示例数据和示例输出吗?事实上,目前还不清楚你想达到什么目的。 –

2014-09-25 07:19:53

+0

'ASC'和'DESC'是整个结果集的基础..不只是那一栏。 –

2014-09-25 07:26:50

+0

用示例编辑原始答案 –

2014-09-25 07:27:54

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值