ここから本文です

SQLの質問をさせて頂きます。

for********さん

2017/6/822:46:27

SQLの質問をさせて頂きます。

売上テーブル

-
売上 CHAR(10)
――
A|
A|
B|
B|
B|

売上履歴テーブル

実行結果
-
明細 DECIMAL(6)|売上 CHAR(10)
――――――――――――――――
1 | A|
2 |A|
3 |A|
4 |A|
1 | B |
2 | B |


ワークテーブル

明細 DECIMAL(6)|売上 CHAR(10)
――――――――――――――――



-
以上のテーブルがあり、ワークテーブルの明細に、売上テーブルの売上の件数(AならAの、BならBの)数を一覧で抽出し、ワークテーブルの売上には売上テーブルのカラムの内容を引っ張りたいです。

かつ、ワークテーブルの明細に抽出した件数は売上履歴テーブルの最大の数値に足した数を挿入したいと考えております。
表すとこの様な感じです


ワークテーブル

-

明細 DECIMAL(6)|売上 CHAR(10)
――――――――――――――――
5 | A|
6 |A|
3 |B|
4 | B |
5 | B |



この様な出力結果を出すにはどの様にすればよろしいでしょうか。
ROW_NUMBER等を使用し、売り上げ数を出す事はできたのですが、以上の様な処理内容にするにはどうしたらよいのか…。

説明が下手で申し訳ございませんが、よろしくお願い致します。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
54
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nor********さん

リクエストマッチ

2017/6/900:29:23

すみませんが

売上テーブル
売上 CHAR(10)
――
A|
A|
B|
B|
B|

売上履歴テーブル
明細 DECIMAL(6)|売上 CHAR(10)
――――――――――――――――
1 | A|
2 |A|
3 |A|
4 |A|
1 | B |
2 | B |

から

明細 DECIMAL(6)|売上 CHAR(10)
――――――――――――――――
5 | A|
6 |A|
3 |B|
4 | B |
5 | B |

にどうしてなるのか分かりません。
仕様・要件を説明してください。
もしかして
売上テーブル
売上 CHAR(10)
――
A|
A|
B|
B|
B|
からROW_NUMBERを使って

売上 CHAR(10)
――
A|1
A|2
B|1
B|2
B|3

にして、「売上履歴テーブル」の「明細」の最大値を足しこんだ結果ですか?
その場合でも「売上履歴テーブル」の「明細」は1から+1ずつ増加しているということは保証されているのでしょうか?

とりあえず
SELECT Q1.売上, Q1.RN + Q2.MAX_明細 明細
FROM
( SELECT 売上, ROW_NUMBER() OVER( PARTITION BY 売上 ORDER BY 売上 ) RN
FROM 売上テーブル ) Q1
JOIN
( SELECT 売上, MAX(明細) MAX_明細
FROM 売上履歴テーブル
GROUP BY 売上 ) Q2
ON Q1.売上 = Q2.売上

で似たような結果は出そうですが、「売上履歴テーブル」の「売上」が欠損している場合にどうするのでしょう?
もう少し分かるように書いてもらえませんか。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる