いつもお世話になっています。
以下の処理を実現するUPDATEの記述を教えて頂けないでしょうか?
よろしくお願い致します。
(ORACLE9i、PL/SQLを想定しています)
【店舗T】に、【売上T】の売上区分が”2”のレコードを対象に、予定日が指定日より近い順に
最大5日分設定する。
※対象となる【売上T】のレコードは、予定日が指定日以降のみ対象とする
※【売上T】は各店舗毎に、0件から数十件まで存在する。
※【店舗T】の売上履歴は毎回クリアし、売上Tより求める
【店舗T】
│ │ 売 上 予 定 情 報 │
│店舗│直近1│直近2│直近3│直近4│直近5│
┼──┼───┼───┼───┼───┼───┼
│A店│ │ │ │ │ │
│B店│ │ │ │ │ │
│C店│ │ │ │ │ │
│D店│ │ │ │ │ │
【売上T】
│店舗│予定日│売上区分│
┼──┼───┼────┼
│A店│12/10 │ 2 │○対象
│A店│12/20 │ 2 │○対象
│A店│12/30 │ 1 │※売上区分が”1”の為、対象外
│A店│12/31 │ 2 │○対象
│ │ │ │
│C店│12/01 │ 2 │※指定日(12/10)より前の為、対象外
│C店│12/05 │ 2 │※指定日(12/10)より前の為、対象外
│C店│12/11 │ 2 │○対象
│C店│12/11 │ 1 │※売上区分が”1”の為、対象外
│C店│12/15 │ 2 │○対象
│C店│12/21 │ 2 │○対象
│C店│12/25 │ 2 │○対象
│C店│12/30 │ 2 │○対象
│C店│12/31 │ 2 │※5件を超えた為、対象外
│ │ │ │
│D店│12/15 │ 1 │※売上区分が”1”の為、対象外
│D店│12/18 │ 1 │※売上区分が”1”の為、対象外
---12月11日の結果---
【店舗T】
│ │ 売 上 予 定 情 報 │
│店舗│直近1│直近2│直近3│直近4│直近5│
┼──┼───┼───┼───┼───┼───┼
│A店│12/20 │12/31 │ │ │ │
│B店│ │ │ │ │ │
│C店│12/11 │12/15 │12/21 │12/25 │12/30 │
│D店│ │ │ │ │ │
No.2ベストアンサー
- 回答日時:
>PL/SQLを想定しています
の意味がちょっとわからないのですが、ひとつのSQLで書いてみました。
売上Tの売上区分='2'・予定日が指定日以降のレコードを
店舗ごとに日付順に番号付けして、番号で設定項目を振り分けます。
--全角でインデントしています
update tenpo_t
set (plan1,plan2,plan3,plan4,plan5)
= (select max(plan1),max(plan2),max(plan3),max(plan4),max(plan5)
from
(select
tenpo
,case when recnum = 1 then yotei else null end plan1
,case when recnum = 2 then yotei else null end plan2
,case when recnum = 3 then yotei else null end plan3
,case when recnum = 4 then yotei else null end plan4
,case when recnum = 5 then yotei else null end plan5
from
(select
tenpo,yotei,row_number() over(partition by tenpo order by yotei) recnum
from uriage_t
where kbn = '2'
and yotei >= /* 指定日 */ date'2010-12-11')
where recnum <= 5) src
where tenpo_t.tenpo = src.tenpo
group by tenpo);
ORACLE10g XEでの確認なので9iではうまくいかないかもしれませんが参考までに。
No.1
- 回答日時:
こんばんは。
うーん・・・、
SELECT 店舗, 予定日, SORT_NUM
FROM
(SELECT 店舗, 予定日, ROW_NUMBER() OVER (PARTITION BY 店舗 ORDER BY 予定日 DESC) AS SORT_NUM
FROM 売上T
WHERE 売上区分 = 2
AND 予定日 >= 指定日(12/10))
WHERE SORT_NUM <= 5
ORDER BY 店舗, 予定日
ネストしなくてもいいかも・・・?
問題は縦に取れたものを横にしないといけないという事です。
上のSQLを5回自己結合すれば何とかなるかな・・・?
taka451213 様
ご回答、ありがとうございました。
このSQLを参考にさせて頂きます。
まだPS段階なので環境もなく実践出来ていませんが、環境出来次第、
このSQLを参考に試行錯誤してみたいと思います。
またよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 一眼レフカメラ αスプリングキャッシュバックキャンペーンが適用されるお店は? ネットで購入した場合も適用されるの? 1 2023/03/07 16:22
- 経営情報システム 事業復活支援金に関する質問です。 家は田舎で小さな飲食店を経営しています。 近年は新型コロナウィルス 4 2022/04/14 15:20
- その他(悩み相談・人生相談) 転売屋ってなんで批判されがちなの? 君たちのやってる事と何が違うの? 11 2022/11/21 16:17
- その他(悩み相談・人生相談) 転売屋ってなんで批判されがちなの? 君たちのやってる事と何が違うのさ 5 2022/12/02 17:53
- 営業・販売・サービス 店舗の店番を無給で他者に行わせる事は違法行為になりますか? 5 2022/06/11 18:27
- 中途・キャリア 雇用契約書を交わした後は給与を上げてもらうことはできないのか? 3 2023/02/23 13:27
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- その他(就職・転職・働き方) 営業マンの成績が悪いからと給与遅延するのは合法ですか? 3 2022/04/24 21:32
- 確定申告 仮想通貨の課税について 1 2022/06/13 17:04
- メルカリ 2022年12月にメルカードの申し込みをしました。 最大1万ポイント貰うにはどうしたらいいでしょうか 1 2022/12/23 23:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01722: 数値が無効です
-
他のテーブルの抽出条件で更新...
-
MySQLで改行を含む文の登録のし...
-
SQLでグループ化した結果の件数...
-
ORACLEのUPDATEについて...
-
項目名の制限について
-
GROUP BYの記述方法について
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
セルの右クリックで出る項目を...
-
Vbaでアクセスからエクセルにリ...
-
変数が選択リストにありません
-
Accessでテーブル名やクエリ名...
-
Accessのフィールド数が255しか...
-
ACCESSでの改行コード
-
Accessのクエリでデータの入力...
-
ACCESSのクエリで集計で、先頭...
-
INSERT INTO ステートメントに...
-
BLOB型のPDF出力の方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
項目名の制限について
-
MySQLで改行を含む文の登録のし...
-
SQLでグループ化した結果の件数...
-
オラクルSQLの累計値取得方法に...
-
ORA-01722: 数値が無効です
-
SQL文 2つのテーブルから、グ...
-
列名無効について
-
フォームで検索 エラーの表示...
-
改行コードを削除して取得する...
-
3つのテーブルの結合
-
各店舗毎の最大売上の項目を取...
-
インサート文での条件の指定に...
-
Accessで期間指定の売上合計と...
-
アクセス レポート作成のため...
-
データベースから抽出した一覧...
-
SQL抽出方法に悩んでいます。 S...
-
GROUP BYの記述方法について
-
SQL文のエラーについて
-
AccessVBA コードをスキップし...
-
Oracleでテーブルの結合について
おすすめ情報