Muster
Nachschlagen zum Gültigkeitsdatum
Den Satz, Preis oder die Version finden, die am Datum jedes Fakts galt, aus einer Tabelle, die Änderungen speichert.
Machen Sie aus den Änderungen Zeiträume mit LEAD(valid_from) OVER (PARTITION BY key ORDER BY valid_from) AS valid_to und
joinen Sie dann über den Schlüssel und fact_date >= valid_from AND (valid_to IS NULL OR fact_date < valid_to). Ein
Join nur über den Schlüssel vervielfacht die Fakten mit der Anzahl der Versionen. Verwenden Sie einen LEFT JOIN und
testen Sie, dass kein Fakt ohne Satz bleibt.
WITH rates(valid_from, rate) AS (VALUES (DATE '2025-01-01', 0.20), (DATE '2025-07-01', 0.21)),
periods AS (
SELECT valid_from, LEAD(valid_from) OVER (ORDER BY valid_from) AS valid_to, rate FROM rates
),
sales(sold_on, amount) AS (VALUES
(DATE '2025-03-10', 120.00), (DATE '2025-07-01', 121.00), (DATE '2025-09-15', 60.50))
SELECT s.sold_on, s.amount, p.rate
FROM sales s
JOIN periods p ON s.sold_on >= p.valid_from
AND (p.valid_to IS NULL OR s.sold_on < p.valid_to)
ORDER BY s.sold_on;
| sold_on | amount | rate |
|---|---|---|
| 2025-03-10 | 120.00 | 0.20 |
| 2025-07-01 | 121.00 | 0.21 |
| 2025-09-15 | 60.50 | 0.21 |