質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

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

SQL

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

Q&A

解決済

3回答

728閲覧

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

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

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SQL

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

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

投稿2021/07/05 03:00

yambejp

総合スコア114585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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

投稿2021/07/05 02:57

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問