![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
いつもお世話になっています。
以下の処理を実現する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ランキング
-
バッチファイルで複数フォルダ...
-
副問合せにLIKE文を使う方法は...
-
IPアドレスを数値に変換
-
videopad 無料版 アンインストール
-
スナップショット取得について...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLでグループ化した結果の件数...
-
MySQLで改行を含む文の登録のし...
-
フォームで検索 エラーの表示...
-
項目名の制限について
-
ORA-01722: 数値が無効です
-
列名無効について
-
オラクルSQLの累計値取得方法に...
-
Accessで期間指定の売上合計と...
-
SQL文 2つのテーブルから、グ...
-
SQLでNOT INと!=ALLの違い
-
改行コードを削除して取得する...
-
縦表示データを列として取得す...
-
SQLServerにおける累積、累計取...
-
SQL抽出方法:売上Tを集計した...
-
SQL文のエラーについて
-
SQL文(県名一覧・・)
-
集計のSQLをお教え下さい
-
各店舗毎の最大売上の項目を取...
-
Oracleでテーブルの結合について
-
【 困 】 ストアドプロシージャ
おすすめ情報