🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Oracle

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

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

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

Q&A

解決済

1回答

1105閲覧

添付表出力実現の為のSQL作成

ajax

総合スコア12

Oracle

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

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) はOracle CorporationによるSQL(非手続き型言語)を手続き型言語に拡張させるために開発されたプログラミング言語です。

SQL

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

0グッド

0クリップ

投稿2019/12/01 11:36

編集2019/12/01 12:26

下記の画像の様な表を出力するに当たり、Excelで泥臭く作業をするのではなくSQLで出力したいと思います。
ご教示宜しく御願い致します。

<DDL> CREATE TABLE Bunseki ( nengetsu CHAR(6) NOT NULL, name CHAR(3) NOT NULL, rank1 CHAR(2) NOT NULL, rank2 CHAR(2) , kosu number ); <INSERT> INSERT INTO Bunseki VALUES ('201904', 'AAA', '01','04',1); INSERT INTO Bunseki VALUES ('201904', 'AAA', '02','04',2); INSERT INTO Bunseki VALUES ('201904', 'AAA', '03','04',3); INSERT INTO Bunseki VALUES ('201904', 'AAA', '04','04',3); INSERT INTO Bunseki VALUES ('201905', 'AAA', '05','09',4); INSERT INTO Bunseki VALUES ('201905', 'AAA', '06','09',5); INSERT INTO Bunseki VALUES ('201905', 'AAA', '07','09',6); INSERT INTO Bunseki VALUES ('201905', 'AAA', '08','09',7);

<対象テーブル>
イメージ説明

<出力したい表>
イメージ説明

<作成途中SQL>

SELECT nengetsu ,name ,rank1 ,rank2 ,sum(kosu) AS KOSU FROM Bunseki GROUP BY GROUPING SETS((nengetsu,name,rank1),(nengetsu,name,rank2)) ORDER BY nengetsu,name,rank1,rank2

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

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

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

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

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

Orlofsky

2019/12/01 12:00 編集

数値は numeric でも宣言できたでしょうけど、一般的には number型を使います。 COBOLをやっていたチームだけnumeric でテーブルを定義していたのを number型に直してもらったこともあります。
Orlofsky

2019/12/01 12:03

月度って何でしょうか? 2019年4月から2020年3月までを2019年度というのは一般的かとは思いますが。(例外はありそうです) 単純に nengetsu 年月で良さそうな気がします。
Orlofsky

2019/12/01 12:05

丸投げはこの掲示板では非推奨なので、間違っていても良いから今考えられるSELECT文を提示ください。
guest

回答1

0

ベストアンサー

sqlplusで実行して、取りあえずSQLでできる範囲で。
ランクの合計を右に持っていくにはもっと自由に編集できるPL/SQLなどが必要です。

SQL

1SQL> COLUMN KOSU HEADING "ランク" 2SQL> COLUMN rank1_l FORMAT A11 HEADING "ランク1個数" 3SQL> COLUMN rank2_l FORMAT A11 HEADING "ランク2個数" 4SQL> COLUMN rank1_r FORMAT A11 HEADING "ランク1個数" 5SQL> COLUMN rank2_r FORMAT A11 HEADING "ランク2個数" 6SQL> SELECT 7 2 sum(kosu) AS KOSU 8 3 , case when nengetsu = '201904' then rank1 end as rank1_l 9 4 , case when nengetsu = '201904' then rank2 end as rank2_l 10 5 , case when nengetsu = '201905' then rank1 end as rank1_r 11 6 , case when nengetsu = '201905' then rank2 end as rank2_r 12 7 FROM 13 8 Bunseki 14 9 GROUP BY 15 10 GROUPING SETS((nengetsu, name, rank1), (nengetsu, name, rank2)) 16 11 ORDER BY 17 12 nengetsu, name, rank1, rank2 ; 18 19 ランク ランク1個数 ランク2個数 ランク1個数 ランク2個数 20---------- ----------- ----------- ----------- ----------- 21 1 01 22 2 02 23 3 03 24 3 04 25 9 04 26 4 05 27 5 06 28 6 07 29 7 08 30 22 09 31 3210行が選択されました。

投稿2019/12/02 01:13

Orlofsky

総合スコア16417

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問