- - PR -
フィールド値でソート順を変更
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-10-20 19:00
データベース( Oracle9i )からの取得時に、
あるフィールド("no")の値がNULLかどうかで、ソートする[フィールド]を替えたいと思っています。 name | job | no ------------------ AAA | BBB | 3 AAA | DDD | 1 AAA | CCC | 2 ------------------ BBB | AAA | null BBB | DDD | null BBB | CCC | null ------------------ CCC | DDD | null CCC | EEE | 1 CCC | AAA | null CCC | BBB | 3 というデータがあるとします。("name"がキーです。) "no"がNULLではない場合: "no" の昇順に取得(name='AAA') "no"がNULLの場合: "job"の昇順で取得(name='BBB') "CCC"のようなデータの場合は、以下のような結果で取得したいと思っています。 "no"がNULLでないレコードを先に昇順で、 次に"no"がNULLのレコードを"job"の昇順で取得 CCC | EEE | 1 CCC | BBB | 3 CCC | AAA | null CCC | DDD | null 今、以下の2つのSQLを順になげて結果をくっつけています。
これを1つのSQL文を投げたいのですが、 どのように書けばいいでしょうか? よろしくお願いします。m(_ _)m | ||||
|
投稿日時: 2005-10-20 19:22
すみません。
解決しました。 フィールド("no")の値がNULLにこだわり過ぎていて、 WHEREに"IS NOT NULL"をつける条件がいるとばかり思ってました。>< 単純に、以下のSQLでできました。
| ||||
|
投稿日時: 2005-10-21 11:55
order byでソートした時に
Oracleはnullを一番大きいとみなしますからねえ (SQL Serverやaccessは一番小さいとみなすらしいです) OracleSQLパズル http://oraclesqlpuzzle.hp.infoseek.co.jp [ メッセージ編集済み 編集者: 重蔵 編集日時 2005-10-21 11:58 ] | ||||
1
