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

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

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

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

Oracle

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

JOIN

これはSQL文のJOINに関するタグです。リレーショナルデータベースシステムの二つ以上のテーブルを結合する際に、この構文が利用されます。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

SQL

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

Q&A

解決済

1回答

580閲覧

SQL Oracle 同一テーブルから各ショップに対して各アイテムの個数を一つのコードで出力する

710LOVER

総合スコア10

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

Oracle

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

JOIN

これはSQL文のJOINに関するタグです。リレーショナルデータベースシステムの二つ以上のテーブルを結合する際に、この構文が利用されます。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

SQL

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

0グッド

0クリップ

投稿2019/09/26 06:19

編集2019/09/26 07:32

前提・実現したいこと

SQLでOraclを使用しています。
同一テーブルから各ショップに対して各アイテムの個数を出力したいのですが
一つにまとめたコードを作成するのに苦戦しています。
イメージとしては以下のような出力結果にしたいです。

Table: SHOPINFO
culm: SHOPCODE, ITEMCODE

SHOP | ITEM1 | ITEM2
AAAA | 3 | 4
AAAB | 1 | null
AAAC | null | 10

発生している問題・エラーメッセージ

ORA-00942:表またはビューが存在しません。 00942. 00000- "table or view does not exist" *Cause: *Action: 行4列13でエラー

該当のソースコード

create table SHOPINFO (SHOPCODE VARCHAR2(7), ITEMCODE VARCHAR2(7));

insert into SHOPINFO (SHOPCODE, ITEMCODE)
values (AAAA, 0001), (AAAA, 0001), (AAAB, 0002), (AAAB, 0001), (AAAC, 0002);

試したこと

select SHOPCODE SHOP, count(A.ITEMCODE) ITEM1, count(B.ITEMCODE) ITEM2
from SHOPINFO A
full join SHOPINFO B
on A.SHOPCODE = B.SHOPCODE
where A.ITEMCODE = '0001'
or B.ITEMCODE = '0002'
group by SHOPCODE

各アイテム単位であれば問題ないのですが一つにまとめる作業で苦戦しています。

ITEM1:
select SHOPCODE SHOP, count(ITEMCODE) ITEM1
from SHOPINFO
where ITEMCODE = '0001'
group by SHOPCODE

ITEM2:
select SHOPCODE SHOP, count(ITEMCODE) ITEM2
from SHOPINFO
where ITEMCODE = '0002'
group by SHOPCODE

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

Orlofsky

2019/09/26 06:37

SQLで使われるテーブルはCREATE TABLEされている必要があります。質問のテーブル定義の説明もCREATE TABLEで、SELECTされるデータもINSERTされている必要がありますから、INSERT文で載せておくとコメントが付き易いです。
710LOVER

2019/09/26 07:32

アドバイスありがとうございます! 修正してみました。
guest

回答1

0

ベストアンサー

やたらと不細工ですが

SQL

1SELECT SHOP 2 ,SUM(ITEM1) AS ITEM1 3 ,SUM(ITEM2) AS ITEM2 4 FROM ( 5SELECT SHOPCODE AS SHOP 6 ,COUNT(ITEMCODE) AS ITEM1 7 ,0 AS ITEM2 8 FROM SHOPINFO 9 WHERE ITEMCODE = '0001' 10 GROUP BY SHOPCODE 11 12UNION ALL 13 14SELECT SHOPCODE AS SHOP 15 ,0 AS ITEM1 16 ,COUNT(ITEMCODE) AS ITEM2 17 FROM SHOPINFO 18 WHERE ITEMCODE = '0002' 19 GROUP BY SHOPCODE ) 20GROUP BY SHOP

※動作確認はしていません。

投稿2019/09/26 07:00

編集2019/09/26 07:02
nandymak

総合スコア799

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

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

710LOVER

2019/09/26 07:49

ご提示ありがとうございます! うまく表示されました! これで定時に帰れます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問