実現したいこと
CASE句を含むSQLを実行し、条件分岐を行なうと同時にGROUP BYで括りたい
前提
元々あったSQLのコードを、CASE句を書き加え条件分岐で表示しようとしています。
ただ、実行を行ったところ、「GROUP BYの式ではありません」とエラーがでてしまいます。 CASE句の部分が原因かとは思うのですが、対処法が分かりません。
(調べる限りでは誤りがないようにみえるのですが、CASE句以外の部分で誤りがあるのでしょうか、、?)
どなたか解決策を教えていただけませんでしょうか?
※CASE句にて条件分岐する前のソースコードも記載しております。
コード中に「CODE_KBN = ’AH’」などと出てきますが、code_tableにて様々なコー. ドの区分や紐づくコードが定義されています。
今回の場合だと、「AH」というコード区分の中に更に番号が振られており、その番号が部署を判別するコードになります。
よろしくお願いします。
発生している問題・エラーメッセージ
ORA-00979: GROUP BYの式ではありません。
00979. 00000- “not a GROUP BY expression”
*Cause:
*Action
行1列1,538でエラー
該当のソースコード
Oracle SQL Developer上にて実行
※CASE句記載前のソースコード(こちらは正しく実行できます)
SELECT
substr(log.REQUEST_INFO,instr(log.REQUEST_INFO,’cyohyoID:[’) + 10) as 帳票ID,
code_tiiki.CODE_NAME as 地域,
COUNT(*) as 回数
FROM
log_table log
LEFT JOIN user_table user on log.user_id = user.user_id
LEFT JOIN
(SELECT CODE_KBN, CODE, CODE_NAME FROM code_table
WHERE CODE_KBN = ’AH’) code_tiiki on use.TIIKI_CD = code.CODE)
WHERE
log.time BETWEEN ’2022/12/26’ and ’2023/01/25’
GROUP BY
substr(log.REQUEST_INFO,instr(log.REQUEST_INFO,’cyohyoID:[’) + 10),
code_tiiki.CODE_NAME
ORDER BY
substr(log.REQUEST_INFO,instr(log.REQUEST_INFO,’cyohyoID:[’) + 10),
code_tiiki.CODE_NAME;
※CASE句にて条件分岐を行ったコード
こちらを実行するとエラーがでます
SELECT
substr(log.REQUEST_INFO,instr(log.REQUEST_INFO,’cyohyoID:[’) + 10) as 帳票ID,
CASE
WHEN user.BUSYO_CD IN (’014’, ’023’) THEN ’〇’
WHEN user.BUSYO_CD IN (’064’) THEN ’△’
WHEN user.BUSYO_CD IN (’065’) THEN ’□’
WHEN user.BUSYO_CD IN (’066’) THEN ’×’
ELSE code_tiiki.CODE_NAME
END as 地域,
COUNT(*) as 回数
FROM
log_table log
LEFT JOIN user_table user on log.user_id = user.user_id
LEFT JOIN
(SELECT CODE_KBN, CODE, CODE_NAME FROM code_table
WHERE CODE_KBN = ’AH’) code_tiiki on use.TIIKI_CD = code.CODE)
WHERE
log.time BETWEEN ‘2022/12/26’ and ‘2023/01/25’
GROUP BY
substr(log.REQUEST_INFO,instr(log.REQUEST_INFO,’cyohyoID:[’) + 10),
CASE
WHEN user.BUSYO_CD IN (’014’, ’023’) THEN ’〇’
WHEN user.BUSYO_CD IN (’064’) THEN ’△’
WHEN user.BUSYO_CD IN (’065’) THEN ’□’
WHEN user.BUSYO_CD IN (’066’) THEN ’×’
ELSE code_tiiki.CODE_NAME
END
ORDER BY
substr(log.REQUEST_INFO,instr(log.REQUEST_INFO,’cyohyoID:[’) + 10),
code_tiiki.CODE_NAME;
補足情報(FW/ツールのバージョンなど)
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - ProductionVersion 18.11.0.0.0

回答3件
あなたの回答
tips
プレビュー