У меня есть таблица, в которой записывается версия прошивки для каждого устройства каждый день. Если устройство выйдет из строя, сценарий для заполнения прошивки устройства не сможет найти его по значению, поэтому нет записи для дней офлайн. Мне нужно представление, которое будет возвращать последнюю версию прошивки для каждого устройства каждый день, независимо от того, было ли устройство выключено или нет. Это прекрасно работает в Postgres SQL:
SELECT
d.ip,
d.date,
CASE
WHEN f.firmware_version IS NOT NULL THEN f.firmware_version
ELSE (--Use last available firmware_version for the device:
SELECT l.firmware_version
FROM firmware l
WHERE l.date < d.date AND l.firmware_version IS NOT NULL
ORDER BY l.date DESC
LIMIT 1)
END AS firmware_version
FROM
devices d --Table with a record for every device every day
LEFT JOIN firmware f ON d.date = f.date AND d.ip = f.ip
Однако мы переходим на Denodo, и я не могу заставить этот запрос работать в Denodo. Кажется, что с ошибкой в подзапросе в заявлении case. Кто-нибудь знает, как я могу получить подобную логику для создания представления в Denodo?