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

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

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

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

SQL

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Q&A

解決済

1回答

2259閲覧

SQLでデータを抽出、表示が出来たのですが、、、

neigerin

総合スコア21

Oracle

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

SQL

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

0グッド

0クリップ

投稿2018/04/25 06:40

編集2018/04/25 07:33

SQLでデータを抽出、表示が出来たのですが(null)が大量に表示されてしまい実行結果が膨らんでしまいました。
下記の様なコードです。

'''
select
STF.STF_NAME,
case KBN.SBT_CD
when 'SECNAME1' then KBN.KBN_NAME else null end 部署,
case KBN.SBT_CD
when 'POSNAME1' then KBN.KBN_NAME else null end 役職,
case KBN.SBT_CD
when 'STFKBN01' then KBN.KBN_NAME else null end 社員区分
from HL_STF_MSTR STF
left join HL_KBN_MSTR KBN
on(STF.SEC_CD=KBN_CD or STF.POS_CD=KBN_CD or STF.STF_KBN=KBN_CD)
--order by
--STF.SEC_CD asc,
--STF.POS_CD asc,
--STF.ENTER_DATE asc
;
'''

以下に記すのがSQL Developerで実行して表示された結果です。

'''
システム部
取締役社長
社員
営業部
取締役部長
社員
システム部
部長
社員
システム部事業推進課
課長
社員
管理部管理課
課長
社員
システム部システム課
主任
社員
システム部事業推進課
リーダー
社員
システム部システム課
課長
社員
システム部事業推進課
一般
社員
システム部事業推進課
一般
社員
システム部システム課
一般
社員
システム部システム課
一般
社員
システム部事業推進課
一般
社員
システム部システム課
一般
社員
システム部事業推進課
一般
社員
システム部システム課
一般
社員
システム部事業推進課
一般
社員
システム部システム課
一般
社員
システム部事業推進課
一般
社員
システム部
一般
契約社員
システム部システム課
一般
社員
システム部システム課
一般
社員
システム部事業推進課
一般
社員
システム部事業推進課
一般
社員
一般
契約社員
管理部管理課
契約社員
契約社員
システム部システム課
一般
契約社員
システム部事業推進課
一般
契約社員
管理部管理課
一般
管理部管理課
一般
システム部
取締役部長
社員
'''

表示が出来ていないのですが大量に(NULL)が紛れています。
この大量の(NULL)を削除するにはどうすれば良いのでしょうか?
例に示すと以下のとおりです。

'''
Aさん  システム部 (null) (null)
Aさん  (null) 取締役部長 (null)
Aさん  (null) (null) 社員
'''

このように3行かけてしまっているのでこれを1行で示したいです。

以下に記すのが大まかな情報です。

社員マスタ、部署マスタ、役職マスタよりデータを抽出する。

  抽出項目:
氏名
部署名
役職名 ※社員区分が正社員以外は「役職名+*」(例:一般*)
条件:
なし。
ソート順:
部署コード(昇順)
役職コード(昇順)
入社日(昇順)

どなたか宜しくお願いします。

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

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

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

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

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

m.ts10806

2018/04/25 06:52

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。
m.ts10806

2018/04/25 06:52

「うまく動作しない」「うまくいかない」では何が起きているか伝わりません。「○○のようになるはずなのに××となってしまう」のような形で「ゴール」と「現象(エラーメッセージなども含む)」を明確にしてください。https://teratail.com/help/question-tips#questionTips3-4-1
sazi

2018/04/25 06:59

パッと見ではエラーは発生しなさそうですけど、sql*plusなどのDBツールで実行してどのようなエラーなのかを追記願います。
guest

回答1

0

ベストアンサー

パッと見ではエラーは発生しなさそうですけど、エラーがあるとすれば属性の不一致くらいかな。
条件判定や結合条件などでエラーなのかもしれません。

何れにせよ、sql*plusなどのDBツールで実行してどのようなエラーなのかを確認して下さい。

追記

ORA-00904: "KBN"."SEC_CD": 無効な識別子です。

HL_KBN_MSTRテーブルにSEC_CDというカラムは無いと言われています。
テーブルレイアウトを確認して下さい。

追記2

表示が出来ていないのですが大量に(NULL)が紛れています。
この大量の(NULL)を削除するにはどうすれば良いのでしょうか?

結合方法が誤っています。
多分以下の様な事だと思います。

SQL

1select 2 STF.STF_NAME, 3 KBN1.KBN_NAME 部署, 4 KBN2.KBN_NAME 役職, 5 KBN3.KBN_NAME 社員区分 6from HL_STF_MSTR STF 7 left join HL_KBN_MSTR KBN1 8 on(STF.SEC_CD=KBN1.KBN_CD and KBN1.SBT_CD='SECNAME1') 9 left join HL_KBN_MSTR KBN2 10 on(STF.POS_CD=KBN2.KBN_CD and KBN2.SBT_CD='POSNAME1') 11 left join HL_KBN_MSTR KBN3 12 on(STF.STF_KBN=KBN3.KBN_CD and KBN3.SBT_CD='STFKBN01') 13order by 14 STF.SEC_CD asc, 15 STF.POS_CD asc, 16 STF.ENTER_DATE asc 17;

投稿2018/04/25 07:01

編集2018/04/25 07:51
sazi

総合スコア25195

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

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

neigerin

2018/04/25 08:04

おかげさまで無事にnullが消えてスマートな表の作成に漕ぎつくことができました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問