- ベストアンサー
SQLコマンドのorder by句
受注金額の大きい順にリストするために select 受注番号,受注金額 from 受注テーブル order by 受注金額 desc; を発行すると、受注金額(数値型)が未定義(null)のものが上位になってしまします。 受注金額がnullのものを零より小さい扱いでリストする方法を教えて下さい。 尚、・・・ where 受注金額 is not null は不可です。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
受注金額がnullのものを-1としても良いなら、 select 受注番号,NVL(受注金額,-1) as AAA from 受注テーブル order by AAA desc; でOKかと思います。 はずしてたらごめんなさい。
その他の回答 (2)
- ymmasayan
- ベストアンサー率30% (2593/8599)
単純な方法はないように思います。 泥臭いですが、ヌルとヌル以外を別処理してUNIONでつないでは? SELECT文が2つになって大変ですけどね。 あとは属性を追加してヌルをマイナスに置き換えとか?
お礼
ヌルをマイナスに置き換きかえる関数を使って試してみます。 ありがとうございました。
- selenity
- ベストアンサー率41% (324/772)
データベースサーバに何を使っているのかが わからないので、なんともいえないのですが、 select 受注番号,受注金額 from 受注テーブル WHERE 受注金額 is not null order by 受注金額 desc union select 受注番号,受注金額 from 受注テーブル WHERE 受注金額 is null ではだめなのですか?
お礼
oracle8i、SqlPlus、WindowsNTです。 エラー行: 4: エラーが発生しました。 ORA-00933: SQLコマンドが正しく終了されていません。 といわれました。 ご指導ありがとうございました。
お礼
おかげさまで欲しいデータの取得ができました。 SQLはパズルですね。 ありがとうございました。