Sobes.tech
Middle

Wie implementiert man eine Abfrage mit dem maximalen Kursdatum für jede Transaktion unter Berücksichtigung von Wochenenden und Feiertagen?

sobes.tech KI

Antwort von AI

Um die Abfrage zu implementieren, die für jede Transaktion den Kurs mit dem maximalen Datum auswählt, wobei Wochenenden und Feiertage berücksichtigt werden, benötigt man:

  1. Eine Tabelle mit den Wechselkursen, in der die Daten angegeben sind, an denen der Kurs gültig war.
  2. Eine Tabelle mit dem Kalender, in der Wochenenden und Feiertage markiert sind.

Die Idee der Abfrage ist — für jede Transaktion — das maximale Kursdatum zu finden, das das Transaktionsdatum nicht überschreitet und an einem Arbeitstag liegt.

Beispiel in SQL (PostgreSQL):

WITH working_days AS (
  SELECT date
  FROM calendar
  WHERE is_holiday = FALSE AND is_weekend = FALSE
),
max_course_dates AS (
  SELECT t.transaction_id, MAX(c.date) AS max_course_date
  FROM transactions t
  JOIN courses c ON c.date <= t.transaction_date
  JOIN working_days wd ON c.date = wd.date
  GROUP BY t.transaction_id
)
SELECT t.*, c.rate
FROM transactions t
JOIN max_course_dates mcd ON t.transaction_id = mcd.transaction_id
JOIN courses c ON c.date = mcd.max_course_date
  AND c.currency = t.currency
;

Auf diese Weise wird für jede Transaktion der Kurs mit dem maximalen Datum ausgewählt, das nicht später als das Transaktionsdatum ist und an einem Arbeitstag liegt (kein Wochenende, kein Feiertag).