問題は次のとおりです。テーブルに2つの列があり、グループごとに同じ順序にする必要があります。今後その仮定をする前に、これが既存のデータに当てはまることを確認したいと思います。
いくつかのサンプルデータ:
gid c1 c2
1 1 5
1 2 7
2 1 22
2 2 38
2 3 40
3 1 4
3 2 8
3 3 2
ご覧のとおり、私が使用した場合
select * from table t where t.gid = 1 order by c1
、結果は同じになり、と同じように順序付けられ
select * from table t where t.gid = 1 order by c2
ます。
結果はgid=2でも一致します。ただし、gid = 3で同じことを行うと、順序は一致しなくなります。その場合、による順序付けc2
は、による順序付けとは異なる結果になるためc1
です。
テーブル全体をチェックして、これらの列のいずれかによる順序付けが、の各値に対して同じ結果になることを確認したいと思いますgid
。サブクエリでMINUS
許可されていないため、 Oracleは機能しません。order by
の制限のために機能しない私の最初の試みは、次のMINUS
とおりでした。
select gid, c1, c2 from table order by gid, c1, c2
minus
select gid, c1, c2 from table order by gid, c2, c1;
それが答えに役立つなら、私はオラクル11gを使用しています。