以前の利用可能な金額を表示するためにLAG関数を使用したいのですが、以前の利用可能な金額のvalue_dateが「償還」の場合、非償還タイプの最後の金額に移動し続けます
次のように、LAGをprevious_availabilityフィールドに適用する必要があることを意味します。
実行日 | future_availability | previous_availability | 正確な日付 |
---|---|---|---|
現在のEOD | 10 | ヌル | 2020-12-18 |
償還 | 2 | 10 | 2020-12-19 |
償還 | 3 | 10 | 2020-12-20 |
償還 | 4 | 10 | 2020-12-22 |
償還 | 5 | 10 | 2022-01-18 |
利用 | 6 | 10 | 2022-01-19 |
償還 | 7 | 6 | 2022-03-18 |
成熟度を制限する | 8 | 6 | 2022-07-18 |
償還 | 9 | 8 | 2025-01-01 |
ありがとうございました!
(注:これはprecise_date
、質問に追加される前に投稿されました)
インデックスがある場合id
:
-- drop table mytable;
create table mytable (
id integer,
value_date varchar(20),
future_availability integer);
insert into mytable values
(1,'Current EOD', 10),
(2,'reimbursment', 2 ),
(3,'reimbursment', 3 ),
(4,'reimbursment', 4 ),
(5,'reimbursment', 5 ),
(6,'utilization', 6 ),
(7,'reimbursment', 7 ),
(8,'Limit Maturity', 8 ),
(9,'reimbursment', 9 );
select
value_date,
future_availability,
(select TOP 1 m2.future_availability
from mytable m2
where m2.id<m1.id and m2.value_date<>'reimbursment'
order by id desc
) as previous_availability
from mytable m1;
出力は次のようになります。
+ --------------- + ------------------------ + -------------------------- +
| value_date | future_availability | previous_availability |
+ --------------- + ------------------------ + -------------------------- +
| Current EOD | 10 | |
| reimbursment | 2 | 10 |
| reimbursment | 3 | 10 |
| reimbursment | 4 | 10 |
| reimbursment | 5 | 10 |
| utilization | 6 | 10 |
| reimbursment | 7 | 6 |
| Limit Maturity | 8 | 6 |
| reimbursment | 9 | 8 |
+ --------------- + ------------------------ + -------------------------- +
しかし、はLAG
機能を使用していません。
編集:これはMSSQLに関するものであるためlimit 1
、削除および追加されましたTOP 1
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加