電子書籍の厳選無料作品が豊富!

OracleのUnion内でそれぞれのOrderBy結果を反映する方法について



AテーブルからデータをBの昇順で一覧を取得する際、Bの特定のコードを先頭に持ってこようとしています。
例)金融機関テーブル(BANK)を金融機関コード(BANK_CK)の昇順で並び替えるが、全銀の'9999'を先頭に持って来たい。

(SELECT BANK_CD FROM BANK WHERE BANK_CD = '9999')
UNION
(SELECT BANK_CD FROM BANK WHERE BANK_CD <> '9999' ORDER BY BANK_CD);

としてしまうと、「ORA-00907: 右カッコがありません。」のエラーとなります。

SELECT 0 "PRE_KEY", BANK_CD FROM BANK WHERE BANK_CD = '9999'
UNION
SELECT 1 "PRE_KEY", BANK_CD FROM BANK WHERE BANK_CD <> '9999'
ORDER BY PRE_KEY, BANK_CD;

としてやると、値は並び変わりますが、いらない"PRE_KEY"が取れてしまいます。

BANK_CDだけ取得する方法はありますでしょうか?oracle11gです。

A 回答 (1件)

SELECT BANK_CD FROM BANK


ORDER BY
CASE WHEN BANK_CD = '9999' THEN 0 ELSE 1 END,
BANK_CD;

# 未検証です
    • good
    • 0
この回答へのお礼

ありがとうございます。
期待した結果が取得できました。

お礼日時:2010/06/14 13:50

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

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