• ベストアンサー

SQLコマンドのorder by句

受注金額の大きい順にリストするために select 受注番号,受注金額 from 受注テーブル order by 受注金額 desc; を発行すると、受注金額(数値型)が未定義(null)のものが上位になってしまします。 受注金額がnullのものを零より小さい扱いでリストする方法を教えて下さい。 尚、・・・ where 受注金額 is not null は不可です。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pcg733
  • ベストアンサー率78% (11/14)
回答No.3

受注金額がnullのものを-1としても良いなら、 select 受注番号,NVL(受注金額,-1) as AAA from 受注テーブル order by AAA desc; でOKかと思います。 はずしてたらごめんなさい。

moderno_parco
質問者

お礼

おかげさまで欲しいデータの取得ができました。 SQLはパズルですね。 ありがとうございました。

その他の回答 (2)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

単純な方法はないように思います。 泥臭いですが、ヌルとヌル以外を別処理してUNIONでつないでは? SELECT文が2つになって大変ですけどね。 あとは属性を追加してヌルをマイナスに置き換えとか?

moderno_parco
質問者

お礼

ヌルをマイナスに置き換きかえる関数を使って試してみます。 ありがとうございました。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

データベースサーバに何を使っているのかが わからないので、なんともいえないのですが、 select 受注番号,受注金額 from 受注テーブル WHERE 受注金額 is not null order by 受注金額 desc union select 受注番号,受注金額 from 受注テーブル WHERE 受注金額 is null ではだめなのですか?

moderno_parco
質問者

お礼

oracle8i、SqlPlus、WindowsNTです。 エラー行: 4: エラーが発生しました。 ORA-00933: SQLコマンドが正しく終了されていません。 といわれました。 ご指導ありがとうございました。

関連するQ&A