Muster
Einen Änderungsstrom anwenden
Einen Stapel von Änderungen auf die letzte pro Schlüssel reduzieren, Löschungen eingeschlossen, und ihn dann mit einem einzigen MERGE anwenden.
Zuerst QUALIFY ROW_NUMBER() OVER (PARTITION BY key ORDER BY seq DESC) = 1: Ein MERGE mit zwei Quellzeilen für einen
Schlüssel schlägt fehl oder behält eine beliebige. Dann WHEN MATCHED AND op = 'D' THEN DELETE, WHEN MATCHED THEN UPDATE,
WHEN NOT MATCHED AND op <> 'D' THEN INSERT. Verwerfen Sie die Löschungen nie vorher. Mit einem Vollabzug statt eines
Stroms ist ein fehlender Schlüssel eine Löschung: Schließen Sie seine aktuelle Version.
WITH changes(seq, op, customer_id, city) AS (VALUES (1, 'I', 7, 'Bern'), (2, 'U', 7, 'Zurich'), (3, 'I', 8, 'Paris'), (4, 'D', 8, NULL), (5, 'U', 2, 'Lille')) SELECT customer_id, op, city FROM changes QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY seq DESC) = 1 ORDER BY customer_id;
| customer_id | op | city |
|---|---|---|
| 2 | U | Lille |
| 7 | U | Zurich |
| 8 | D | NULL |