質問するログイン新規登録

Q&A

解決済

3回答

1199閲覧

SELECT 内のCASE文でエラーになるが、原因が分からないのでご教授下さい

JulieKenji

総合スコア4

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/07/05 02:52

0

0

SELECT 内に下記CASE文を記載したところ、この場所でエラーとなりました。
文法上間違っている部分があるのでしょうか。
やりたい事は、『保管場所』の値が「10」,「20」,「30」のいずれかの場合、
在庫種類の区分値名の前に「本店」を付与したいです。

SQL

1SELECT 2 TANA.場所コード 3 ,CASE WHEN TANA.保管場所 IN('10','20','30') THEN 4 ,CASE TANA.在庫種類 5 WHEN '1' THEN '本店(通常)' 6 WHEN '2' THEN '本店(異常)' 7 WHEN '3' THEN '本店(その他)' 8 END 9 ELSE 10 ,CASE TANA.在庫種類 11 WHEN '1' THEN '通常' 12 WHEN '2' THEN '異常' 13 WHEN '3' THEN 'その他' 14 END 15 END AS 在庫区分

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

m.ts10806

2021/07/05 02:53

どういうエラーでしょうか
Y.H.

2021/07/05 02:54

> この場所でエラーとなりました。 エラーメッセージを省略せず質問に記載ください。 エラーメッセージを記載している方が回答を得られやすくなりますよ。
JulieKenji

2021/07/05 04:02

m.ts10806様、Y.H.様 質問への追記、ありがとう御座います。 本件は解決致しましたが、今後質問する際は、エラーメッセージの記載を含め より具体的に記載するよう、努めます。
guest

回答3

0

エラーはcase内に不要な,があるからです。

replace()を使用して、以下の様な記述でも出来たりします。

SQL

1replace( 2 case when tana.保管場所 in ('10','20', '30') then '本店(%1)' else '%1' end 3 , '%1' 4 , case tana.在庫種類 5 when '1' then '通常' 6 when '2' then '異常' 7 when '3' then 'その他' 8 end 9) as 在庫区分

投稿2021/07/05 03:17

sazi

総合スコア25437

0

SQL

1,CASE TANA.在庫種類 2↓↓↓ 3CASE TANA.在庫種類

2箇所とも。
また内側のCASEがELSEを持っていませんが大丈夫ですか?

投稿2021/07/05 03:00

yambejp

総合スコア118405

0

ベストアンサー

最終的に1つが列となるので最初のcase以外の頭についてる,が文法として間違いに思います。
あくまで「selectする列の区切り」に入れてください。

投稿2021/07/05 02:57

m.ts10806

総合スコア80896

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問