SQL Advance ORDER By

时间:2014-09-15 05:34:28

标签: sql

我有一个看起来像这样的表:

x----------y------z
a------ 2014---28
a------ 2013---26
b------ 2014---38
b------ 2013---25
c------ 2013---18
c------ 2014---17

并且需要它看起来像这样:

x----------y------z
b------ 2014---38
b------ 2013---25
a------ 2014---28
a------ 2013---26
c------ 2014---17
c------ 2013---18

所以我需要根据Z从高到低进行排序,但我需要在其下方的最后几年日期。我可以靠近但不够近,请帮忙!

2 个答案:

答案 0 :(得分:1)

select t1.* from mytable t1
join (
    select max(z) max_z, x
    from mytable
    group by x
) t2 on t2.x = t1.x
order by t2.max_z desc, t1.x, t1.z desc, t1.y desc

答案 1 :(得分:0)

如果可用分析函数:

select x,y,z from 
    (
        select t1.*
        ,max(z) over (partition by x) mz 
        from mytable t1
    ) 
order by mz desc, x,z desc, y desc