Как построить SCD2 версионную таблицу в SQLiteStudio (3.2.1)?

Есть такая таблица:

CREATE TABLE cash (
    dt     DATETIME, 
    value  NUMERIC (10, 2)
);
INSERT INTO cash (dt, value)
VALUES   ('2020-01-01', 1000),
         ('2020-02-14', -200),
         ('2020-02-23', -300),
         ('2020-03-07', 700),
         ('2020-03-20', -500);

Нужно сделать для нее SCD2 версионную таблицу баланса на счете. Должно получится что - то похожее на это: Похожее на это


Ответы (1 шт):

Автор решения: Absurd
CREATE TABLE cash (
    dt     DATETIME, 
    value  NUMERIC (10, 2)
);
INSERT INTO cash (dt, value)
VALUES   ('2020-01-01', 1000),
         ('2020-02-14', -200),
         ('2020-02-23', -300),
         ('2020-03-07', 700),
         ('2020-03-20', -500);

SELECT  dt Effective_from,
        (SELECT SUM(value) FROM cash t1 WHERE t1.dt <= t2.dt) Total, /*strftime('%Y %m %d', dt, '-1 days')*/ coalesce (lead(strftime('%Y %m %d', dt, '-1 days')) over(), '9999 12 31') Effective_to
FROM cash t2
union select '1900-01-01' , '0', '2019 12 31'
FROM cash;
→ Ссылка