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

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

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

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

SQL

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

Q&A

解決済

3回答

8175閲覧

SQL内NVL CASEが効かない

cina12064

総合スコア21

Oracle

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

SQL

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

0グッド

0クリップ

投稿2017/05/23 06:50

編集2017/05/23 06:59

取得したデータ項目に対して、その項目の値がNULLであれば、’文字列’に変換するように書いていますが、なぜか効かない(変換してくれない、NULLのまま)、この問題を解決できるアドバイスをいただけませんか?(内部結合や外部結合やサブクエリなどを使っている)

宜しくお願い致します。

SELECT FINAL_RESULT.RESULT2 ,FINAL_RESULT.RESULT3 ,FINAL_RESULT.RESULT4 ,FINAL_RESULT.RESULT5 ,SUM(FINAL_RESULT.RESULT6) ,FINAL_RESULT.RESULT7 ,FINAL_RESULT.RESULT8 ,FINAL_RESULT.RESULT9 FROM ( SELECT DISTINCT FOR_RESULT.RESULT2 ,FOR_RESULT.RESULT3 ,FOR_RESULT.RESULT4 ,FOR_RESULT.RESULT5 ,FOR_RESULT.RESULT6 ,FOR_RESULT.RESULT7 ,FOR_RESULT.RESULT8 ,FOR_RESULT.RESULT9 FROM ( 内部結合やら外部結合やらサブクエリなど )FOR_RESULT GROUP BY FOR_RESULT.RESULT2 ,FOR_RESULT.RESULT3 ,FOR_RESULT.RESULT4 ,FOR_RESULT.RESULT5 ,FOR_RESULT.RESULT6 ,FOR_RESULT.RESULT7 ,FOR_RESULT.RESULT8 ,FOR_RESULT.RESULT9 )FINAL_RESULT GROUP BY FINAL_RESULT.RESULT2 ,FINAL_RESULT.RESULT3 ,FINAL_RESULT.RESULT4 ,FINAL_RESULT.RESULT5 ,FINAL_RESULT.RESULT7 ,FINAL_RESULT.RESULT8 ,FINAL_RESULT.RESULT9

取得した FINAL_RESULT.RESULT2
,FINAL_RESULT.RESULT3
,FINAL_RESULT.RESULT4
,FINAL_RESULT.RESULT5
,SUM(FINAL_RESULT.RESULT6)
,FINAL_RESULT.RESULT7
,FINAL_RESULT.RESULT8
,FINAL_RESULT.RESULT9
のデータがNULLだったので、NVL(FINAL_RESULT.RESULT2,'1')で書き換えたら、NULLのままでデータが返されました。

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

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

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

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

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

m.ts10806

2017/05/23 06:54

具体的にどの部分が効いていないのか分からないのでSQLを提示してもらえませんか?公開が難しい情報があるならそこだけマスクするとかでも構いません。
cina12064

2017/05/23 06:59

SQLを提示しましたので、宜しくお願い致します。
guest

回答3

0

RESULT2~9のデータ型はなんでしょう?
SUMしているくらいだから数値型でしょうか?
だとすると数値と文字列が混在することになるのでエラーになっているかもしれません。
文字列ではなく数値に変換するか、NULLではないとき(通常時)の値を文字列として出力するかして、レコード全体の型を統一した方が良いかもしれません。

SQL

1--数値に変換 2NVL(FINAL_RESULT.RESULT2,1) 3 4--文字列にする 5NVL(CAST(FINAL_RESULT.RESULT2 AS VARCHAR2), '1')

投稿2017/05/23 07:22

ttyp03

総合スコア16998

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

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

cina12064

2017/05/23 07:38

コメントありがとうございます。 試してみたところで、データの型が原因ではないこととわかりました。 ほかに考えられる原因ってありますでしょうか?
ttyp03

2017/05/23 07:49

すみません、決定的な原因まではわからないです。 あとはSQLを分解してサブクエリごとに試してみるとかですかね。
guest

0

自己解決

A5MK2を使っているので、取得したデータがまったくなくても、1行のnullが取得されているように表示されています。対象がカラなので、nvlやcase文を使っても効かないのが正しいです。
簡単にいうと、自分の勘違いですね。
お騒がせしまして、申し訳ありません。

投稿2017/05/24 00:18

cina12064

総合スコア21

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

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

0

タイトルにCASEがありますが、質問の内容にはCASEは載っていません。DISTINCTしているのにGROUP BY句があるのはおかしいです。
問題を解決したいならCREATE TABLE文やテーブルのデータをINSERT文を載せると共に、

内部結合やら外部結合やらサブクエリなど

の内容を提示されては?

投稿2017/05/23 18:14

編集2017/05/23 18:17
Orlofsky

総合スコア16415

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問