私はこの問題のために私の運を試してみました。私はMYSQL & SQLServerソリューションを持っていて、Oracleではなく、必要な特定のロールアップには対応していません。 使用しているOracleのバージョンでは、クロス・アプライを使用できないため、ロード・ブロックをヒットします。不足データを記入Oracle
多くの人にとって問題は簡単です。
私の宇宙の始まりは13ヶ月です。
私は
CREATE TABLE TBLTESTAUM (
ORDER_NO NUMBER(10,0) NOT NULL ENABLE,
RECORD_DATE DATE,
Order_SEQUENCE NUMBER(5,0) NOT NULL ENABLE,
CLASS NUMBER(3,0));
INSERT INTO TBLTESTAUM VALUES (1234, '29-Aug-2015', 34, 459);
INSERT INTO TBLTESTAUM VALUES (1234, '20-Jun-2016', 35, 877);
INSERT INTO TBLTESTAUM VALUES (1234, '20-Jun-2016', 37, 877);
INSERT INTO TBLTESTAUM VALUES (1234, '02-Jul-2016', 39, 122);
INSERT INTO TBLTESTAUM VALUES (1234, '28-Jul-2016', 40, 122);
INSERT INTO TBLTESTAUM VALUES (1234, '31-Jul-2016', 41, 311);
INSERT INTO TBLTESTAUM VALUES (1234, '10-Aug-2016', 42, 311);
INSERT INTO TBLTESTAUM VALUES (1234, '18-Aug-2016', 44, 110);
INSERT INTO TBLTESTAUM VALUES (1234, '20-Aug-2016', 45, 110);
を持つテーブルには注意してくださいました:
- 20/7月/ 2015年最初のインサートに。
- Seqフィールドにはそれぞれの値がある場合とない場合があります。それはいくつかが欠けているかもしれません。それを使用したい場合。
- シーケンスのNullableは無視できません。
したがって、13日のローリングで今日の22/07/2015が表示されます。
毎週「CLASS」の状況でこれを分割し、その週に何も存在しない場合は、最後に適用されたCLASSが必要です。最後のものがなければ、すなわちそれは最初のインスタンスであり、次に適用されるCLASSである。クラスが変更されるまでなるように
出力 -
Order Num WeekDate CLASS
123 27-Jul-15 459
123 3-Aug-15 459
123 10-Aug-15 459
123 17-Aug-15 459
123 24-Aug-15 459
123 31-Aug-15 459
123 7-Sep-15 459
Dates and Order Num to continue till next match in TBLTESTAUM is found
123 20-Jun-16 877
123 27-Jun-16 122
123 4-Jul-16 122
123 11-Jul-16 122
123 25-Jul-16 311
123 1-Aug-16 311
123 8-Aug-16 311
123 15-Aug-16 110
123 22-Aug-16 110
複数の注文numがあります。しかし、私はあなたのコードがすべてに適合することを願っています。 注記
週間ステータスにロールアップする必要があります。
月額ステータスを行う必要があります。しかし、うまくいけば、私はあなたのコードからそれを理解することができます。
ありがとうございます。
PS:今後10時間は回答を見ることができません。男は眠れました。しかし、本当にあなたがこれに費やす時間を感謝します。
予想された結果と以前に使用したクエリも表示してください。 – jarlh
なぜあなたは横方向結合(cross-joining)が必要だと思いますか? –
@jarlh私は一枚ずつしていました。何らかの理由でハイパーリンクの書式設定が間違っていました。そして、それは私にエラーを与えた、コード書式が間違っていると言っている。 – SeeWe