アプリ版:「スタンプのみでお礼する」機能のリリースについて

続.ORACLEのSELECTのソートについて。

下記の要件を満たすSQLを教えてください。
テーブル名:CODE_MST
カラム:
コード値(CODE)
コード名称(CODE_NAME)

SELECT結果のカラム名を、それぞれ、
コード値(CODE) → (GAMEN_CODE)
コード名称(CODE_NAME) → (GAMEN_NAME)
にするために、

SELECT ' ' AS GAMEN_CODE, ' ' AS GAMEN_NAME
FROM (DUAL
UNION
SELECT CODE, RTRIM(NAME) GAMEN_CODE
FROM CODE_MST)
ORDER BY CASE SUBSTR(GAMEN_CODE,1,1) WHEN '終' THEN 2 ELSE 1 END, GAMEN_CODE

このようにしましたが、
ORA-00907: 右カッコがありません。
のエラーになってしまいました。
カッコの数は正しいように見えるのですが、原因は何なのでしょうか。

A 回答 (2件)

SELECT CODE AS GAMEN_CODE, RTRIM(CODE_NAME) AS GAMEN_NAME


FROM CODE_MST
ORDER BY CASE SUBSTR(CODE_NAME, 1, 1) WHEN '終' THEN 2 ELSE 1 END, CODE_NAME;
    • good
    • 0

クエリの書き方も間違っているし、DUAL表やUNIONを使う必要性もありません。


サブクエリで情報を確定させてからソートすれば済みます。

SELECT
GAMEN_CODE
, GAMEN_NAME
FROM
(
SELECT
CODE AS GAMEN_CODE
, RTRIM(NAME) AS GAMEN_NAME
, CASE SUBSTR(CODE, 1, 1) WHEN '終' THEN 2 ELSE 1 END AS SORT_KEY
FROM
CODE_MST
)
ORDER BY
SORT_KEY, GAMEN_CODE
    • good
    • 0

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

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