以下のようなテーブルがあります。
納品データ
注文番号 売上番号 連番 商品名
11111 2 1 さしすせそ
11111 2 2 たちつてと
11111 3 1 なにぬねの
11111 4 1 はひふへほ
売上データ(既存データ)
注文番号 売上番号 連番 商品名
11111 1 1 あいうえお
11111 1 2 かきくけこ
注文番号は注文毎に付与される番号
売上番号は発送毎に付与される番号
連番は売上番号毎に付与される連番
毎回 納品データを売上データに取り込みます。
連番に関しては、
納品データと売上データで連番は連動しておらず、
売上データに納品データと同等の注文番号があれば、
注文番号の最大連番数を+1した番号で取り込みます。
更新後、売上データは、
注文番号 売上番号 連番 商品名
11111 1 1 あいうえお(既存データ)
11111 1 2 かきくけこ(既存データ)
11111 2 3 さしすせそ
11111 2 4 たちつてと
11111 4 5 なにぬねの
11111 5 6 はひふへほ
としたいのです。
SELECT
(SELECT 納品データ.連番+(SELECT NVL(MAX(売上データ.連番),0) FROM 売上データ
WHERE 売上データ.注文番号 = 納品データ.注文番号) AS 連番)
FROM 納品データ
で売上データの連番+1はできたのですが、
売上番号が違う場合は、連番が1になるパターンとなり、
納品データ
注文番号 売上番号 連番 商品名
11111 2 1 さしすせそ
11111 2 2 たちつてと
11111 3 1 なにぬねの ←
11111 4 1 はひふへほ ←
上記SQLですと、
更新後、売上データは、
注文番号 売上番号 連番 商品名
11111 1 1 あいうえお(既存データ)
11111 1 2 かきくけこ(既存データ)
11111 2 3 さしすせそ
11111 2 4 たちつてと
11111 4 3 なにぬねの ← 5にしたい
11111 5 3 はひふへほ ← 6にしたい
となり、連番となりません。
どのようにSQLを書けばよいのか、困っています。
どうか、ご教示お願い致します。
No.1ベストアンサー
- 回答日時:
こういうことでしょうか。
insert into 売上データ (
注文番号, 売上番号, 連番, 商品名
)
select
注文番号
, 売上番号
, ROW_NUMBER() over(partition by 注文番号 order by 売上番号, 連番) + (select COUNT(*) from 売上データ T2 where T1.注文番号 = T2.注文番号) 連番
, 商品名
from 納品データ t1;
ROW_NUMBER()で納品データ内での連番を振って、その連番に既存データの件数を足しています。
MAX(連番)だと、同一注文番号が既存データに存在しない時にNULLになってしまうので、COUNTで件数を取るようにしています。
>>ROW_NUMBER() over(partition by 注文番号 order by 売上番号, 連番)
>>MAX(連番)だと、同一注文番号が既存データに存在しない時にNULLになってしまうので、COUNTで件数を取るようにしています。
バッチリです!
ROW_NUMBERを使用するのですね。
とても勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ROWNUMでUPDATEをしたいのですが・・・。
Oracle
-
SELECTした結果に行番号を求めたい
PostgreSQL
-
Statement ignored というエラー
Oracle
-
-
4
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
5
GROUP BYを行った後に結合したい。
Oracle
-
6
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
7
全角空白のTRIMができない・・・
Oracle
-
8
select句副問い合わせ 値の個数が多すぎます
Oracle
-
9
FROM の中で CASE を使えるでしょうか
SQL Server
-
10
重複していないレコードの抽出方法について
MySQL
-
11
SQL文で右から1文字だけ削除するやり方
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LEFT JOIN あいまいな外部結合
-
商品番号を入力すると、商品名...
-
orace SQL文のエラー(ORA-0092...
-
updateでグループ化
-
IDの欠番
-
ACCESS2000でコードごとの連番...
-
特定条件での連番の振り方を教...
-
Accessのフォームで思った順番...
-
エクセルでリピート率
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
for whichの使い方
-
外部参照してるキーを主キーに...
-
列のヘッダーを含めるのをデフ...
-
SELECT 文 GROUP での1件目を...
-
INSERT文でフィールドの1つだ...
-
Nullの使い方が不正です。
-
重複していないレコードの抽出...
-
JANコードとPOSコードは同じ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
商品番号を入力すると、商品名...
-
LEFT JOIN あいまいな外部結合
-
特定条件での連番の振り方を教...
-
Accessのフォームで思った順番...
-
2つのテーブルを結合して最大値...
-
IDの欠番
-
updateでグループ化
-
エクセルでリピート率
-
各伝票に対して明細を1行目だけ...
-
アクセスのフォームで連動した...
-
ACCESSでフォーム上のオブジェ...
-
Accessレポート 複数条件での集計
-
orace SQL文のエラー(ORA-0092...
-
アクセス メインフォームの伝...
-
Word差し込み印刷 数式について
-
Accessの追加クエリの方法(重...
-
複数のゲストカテゴリ別売上集...
-
文字列のあるキーワードから開...
-
ACCESSでテキストデータ...
-
突合せによるレコード結合につ...
おすすめ情報