複数の列によって順序付け:だから注文 - 私はこのようなテーブルを持っている
A B C
-----------------------
111 3
777
333 1
555 2
333
777 4
888 5
、私は「Bによるため、」ORDER BY文を持っていると私はこのようになります:
A B C
----------------------
333 1
555 2
111 3
777 4
888 5
777
333
しかし、私はこのソートを取得するために何を行うことができます。
場合A B C
-----------------------
333 1
333
555 2
111 3
777 4
777
888 5
列C nullではない、私は行wher後、この行を入れる必要がありますe A = C
ありがとうございました!
したがって、この場合には:
with a(a,b,c) as (select 111,4, null from dual union all
select null,null,777 from dual union all
select 333,1,null from dual union all
select 555,2, null from dual union all
select null,null, 333 from dual union all
select 777, 4, null from dual union all
select 444,null, 333 from dual union all
select 888, 5, null from dual union all
select null,null,777 from dual)
select a.*
from a
order by last_value(b ignore nulls)
over (partition by CASE when b is null then c else a end order by b), b nulls last
Iが出力される(C 777が原因B値の、111の後にある同じ= 4である)ことがあります
A B C
--------------------
333 1
444 333
333
555 2
777 4
111 4
777
777
888 5
でもこれを取得したい:
A B C
--------------------
333 1
444 333
333
555 2
777 4
777
777
111 4
888 5
あなたはAとC nullではないの両方を持つ行を持つことができますか? – Aleksej
はい、私はその行を持っている可能性があります – user2783755
@ user2783755、私の答えを確認してください、2種類があります。 –