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

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

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

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Oracle

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

SQL

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

Q&A

解決済

2回答

3559閲覧

1つのテーブルから条件が違うデータをSELECTして、まとめて表示させることができません。

Y.Mamoru

総合スコア47

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Oracle

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

SQL

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

0グッド

0クリップ

投稿2020/09/03 08:43

編集2020/09/03 09:04

〇やりたいこと
社員名、各社員の売り上げ、日付のデータが格納されたテーブルを、
社員名毎に、各月の売り上げ平均を表示させるようにしたい。

///テーブルイメージ///


社員名  |売り上げ |日付
ーーーーーーーーーーーーーーー
Aさん  |5000   |2009/04/01
ーーーーーーーーーーーーーーー
Bさん   |4500   |2009/7/23
ーーーーーーーーーーーーーーー

このテーブルを、、、
社員名  |1月売り上げ平均 |2月売上平均
ーーーーーーーーーーーーーーー
Aさん  |32300    |43400
ーーーーーーーーーーーーーーー
Bさん   |23200  |23200
ーーーーーーーーーーーーーーー

このように表示させたいです。(数字は適当です)

〇困っていること
各月の売り上げ平均は出せるのですが、1つにまとめられません。
自己結合をさせるべきかと考えているのですが、私の書き方がではSELECT文が複数にわたり、それぞれのSELECT文に対して別のWHEREで条件付けをする必要が出ています。
(以下自分が考えているコード)

SQL

1SELECT 社員名 , TO_CHAR(AVG(売上)) AS "1月分" FROM 社員テーブル GROUP BY 社員名 WHERE TO_CHAR(日付,'MM') = '01';

上記のコードでまず1月分の社員名と月売り上げ平均が取れます。
どうように2月、3月と書いてみたのですが、
それらをどのようにして1つにまとめたらよいのかがわからないです。

〇試してみたこと
・UNIONでまとめてみました。そうすると名前、1~12月までの平均を全て出せるのですが、
表のカラムが1行になり、縦に並べられてしまいます。

・JOINでまとめてみました。
これならば横に並ぶ蓮なのですが、WHERE区での条件指定が最後の1文にしか書けず、
複数のSELECT文に違った条件(月の指定を変える)ことができません。

アドバイスをお願いします。

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

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

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

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

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

guest

回答2

0

PIVOT関数使うと、内部的に月毎のカラムを生成してくれます。
Oracle 11g検証 隠れた新機能検証 その1

投稿2020/09/03 12:46

sazi

総合スコア25327

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

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

Y.Mamoru

2020/09/10 09:16

返信遅くなってしまいました。。 ありがとうございます!
guest

0

ベストアンサー

マルチバイト文字を含んだテーブル名や列名はダブルクォーティングしなければ動作保証されません。

質問にCREATE TABLE文やテーブル中のデータをINSERT文で何件か追記できた方が適切なコメントが付き易いです。

動作確認していないけどけど、こんな感じかも?

SQL

1SELECT 2 "社員名" 3 , AVG(CASE 4 WHEN TO_CHAR("日付", 'MM') = '02' THEN "売上" 5 ELSE 0 6 END) AS "1月分" 7 , AVG(CASE 8 WHEN TO_CHAR("日付", 'MM') = '03' THEN "売上" 9 ELSE 0 10 END) AS "2月分" 11FROM "社員テーブル" 12WHERE 13 TO_CHAR("日付", 'MM') IN('01', '02') 14GROUP BY 15 "社員名" 16 , TO_CHAR("日付", 'MM') ;

投稿2020/09/03 10:26

Orlofsky

総合スコア16417

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

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

sazi

2020/09/03 10:47

else 0は他の月なので、その月の平均ではなくなってしまいませんか?
Y.Mamoru

2020/09/03 10:49

いけました!いつもありがとうございます! 質問の際の””も教えてくださりありがとうございます! saziさん、ありがとうございます! 今しっかり表が表示された感度でまだ確認できていないんで、これから確認してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問