Как построить 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;