日期:2014-05-17  浏览次数:20867 次

请教查询排序问题
seqno   xxx    yyy
1        A      5
2        A      5
3        A      4
4        A      5
5        B      5
6        B      5
7        B      5
8        B      5

我想查表里的数据,并且排序

排序是:先seqno正序,然后yyy里面排倒序并且xxx里面A的倒序
就是yyy里面有个4,我要排倒序,并且要在A值里面排最后

最后查询的效果希望是:

seqno   xxx    yyy
1        A      5
2        A      5
4        A      5
3        A      4
5        B      5
6        B      5
7        B      5
8        B      5

------解决方案--------------------
这样?


with t1 as
(
     select 1 c1,'A' c2,6 c3 from dual union all
     select 2 c1,'A' c2,5 c3 from dual union all
     select 3 c1,'A' c2,3 c3 from dual union all
     select 4 c1,'A' c2,8 c3 from dual union all
     select 5 c1,'B' c2,5 c3 from dual union all
     select 6 c1,'B' c2,7 c3 from dual union all
     select 7 c1,'B' c2,4 c3 from dual union all
     select 8 c1,'B' c2,5 c3 from dual 
)

select * 
from t1
order by c2,c3 desc,c1

    c1    c2    c3
-------------------------------
1 4 A 8
2 1 A 6
3 2 A 5
4 3 A 3
5 6 B 7
6 5 B 5
7 8 B 5
8 7 B 4


------解决方案--------------------
听着 需求应该就是这样吧  如果yyy相同 就按seqno排序 如果不同 按yyy排序 ?

上面这么写 针对提问的要求 可以满足