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

このQ&Aに関連する最新のQ&A

desc」に関するQ&A: 【バグ?】ORDER BY DESCでempty

A 回答 (3件)

受注金額がnullのものを-1としても良いなら、



select 受注番号,NVL(受注金額,-1) as AAA from 受注テーブル order by AAA desc;
でOKかと思います。
はずしてたらごめんなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/15 15:24

単純な方法はないように思います。



泥臭いですが、ヌルとヌル以外を別処理してUNIONでつないでは?
SELECT文が2つになって大変ですけどね。

あとは属性を追加してヌルをマイナスに置き換えとか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/15 15:27

データベースサーバに何を使っているのかが


わからないので、なんともいえないのですが、

select 受注番号,受注金額 from 受注テーブル
WHERE 受注金額 is not null
order by 受注金額 desc
union
select 受注番号,受注金額 from 受注テーブル
WHERE 受注金額 is null

ではだめなのですか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/15 15:31

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q単一グループのグループ関数ではありません。

オラクル10を使っています。

select NAMAE max(TEN) from KYOUKA WHERE OK=1 and CLASS IS ('A', 'B', 'C');

で単一グループのグループ関数ではありません。
というエラーになります。

CLASS | OK | NAMAE | TEN |
--------------------------
A 1 a01 50
A 1 a02 60
B 1 b01 10
C 1 c01 70
C 0 c02 100

a02 60
b01 10
c01 70
という結果になってほしいです。

Aベストアンサー

SQLの根本的な文法が理解できていないのかと

GROUP BY 句について調べてみましょう

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

QUPDATE文のWHERE条件に他のテーブルのフィールドも入れたい

SQL文についてです。

表Aで列1と列2が'◎'のものについて、列3,列4,列5をそれぞれ'○','△','×'に更新したい場合は下記でOKだと思います。
UPDATE 表A
SET 列3 = '○', 列4 = '△', 列5 = '×'
WHERE 列1 = '◎' AND 列2 = '◎'

列1と列2をキーとして表Aと結合できる表Bが存在するとします。
条件に表Bの列6が'□'だった場合を追加したい時、どのような方法で行えば良いのでしょうか?
内部結合やWHERE EXISTSなどをいろいろ調べたのですが、SQL文に慣れていないためかうまくいきません。
初歩的な質問で申し訳ありませんが過去質問で参考になるものがなかったのでお願いします。

Aベストアンサー

UPDATE 表A
SET 列3 = '○', 列4 = '△', 列5 = '×'
WHERE 列1 = '◎' AND 列2 = '◎'
AND EXISTS
( SELECT 1 FROM 表B
WHERE 表B.列1 = 表A.列1
AND 表B.列2 = 表A.列2
AND 表B.列6 = '□' )
じゃだめですか。

QOracleで「文字が無効です」のエラーが出ます

Oracleで「文字が無効です」のエラーが出ます

JavaからOracleに接続して、SELECT文を発行していますが、何度試しても上記のエラーが出ます。
発行しているSELECT文を、SQLPlusから打ち込むとちゃんと実行できます。
何が悪いのか見当がつきません。
お知恵をお貸しください。
ちなみに、対象テーブルの項目はvarchar2とnumberだけの項目ばかりで、日本語は使ってません。
また、Oracle初心者です。

環境
端末:WindowsXP
Oracle:10g Express Edition ※文字コードはAL32UTF8
IDE:Eclipse3.5 ※設定-一般-ワークスペースのテキストファイルエンコードはUTF-8

Aベストアンサー

Java内で生成したSQL文を見ないとなんとも言えないけど。

Javaでリテラル吐き出して編集してますかね?
select UserID, UserName from mstUser where UserID = '001'; みたいな。
条件によって 001 の部分を変化させるような。


だったらJavaでシングルクォートを吐き出すところを二重にしてみるとどうかな?
ダブルクォートでは無いよ。二重に書くことでシングルクォート一個と解釈されればOKのはず。

そうしておかないとSQL文全体を文字列で扱うんだろうから、シングルクォートの対応が崩れる。

つくりとしては以下のように作成。
select UserID, UserName from mstUser where UserID = ''001''; みたいな。

SQL文を文字列変数に格納するんだろうから
'select UserID, UserName from mstUser where UserID = ''001'';'


人気Q&Aランキング