Middle
¿Cómo implementar una consulta con la fecha máxima del tipo de cambio para cada transacción, teniendo en cuenta los fines de semana y días festivos?
sobes.tech AI
Respuesta de la IA
Para implementar la consulta que, para cada transacción, selecciona la tasa con la fecha máxima, considerando fines de semana y días festivos, se necesita:
- Tener una tabla con las tasas de cambio, donde se indiquen las fechas en que la tasa fue vigente.
- Tener una tabla con el calendario, donde se marquen los fines de semana y días festivos.
La idea de la consulta es — para cada transacción — encontrar la fecha de tasa máxima que no supere la fecha de la transacción y que además sea un día laborable.
Ejemplo en 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
;
De esta forma, para cada transacción se selecciona la tasa con la fecha máxima que no sea posterior a la fecha de la transacción y que además sea un día laborable (no fin de semana ni festivo).