У меня проблемы с попыткой оптимизировать этот запрос с помощью OVER (PARTITION BY ...), поскольку поле id таблицы, содержащей maxDate, должно относиться к другой таблице.
Рабочий запрос:
SELECT maxReadDate, Equip.idProtocol
FROM Equip,
(
SELECT idEquip as idEquipTot, MAX(readDate) AS maxReadDate
FROM Totalizer
WHERE Totalizer.idEquip = xxx
GROUP BY idEquip
)
WHERE Equip.idEquip = idEquipTot
Я пытаюсь что-то сделать, но это не сработало:
SELECT maxReadDate, Equip.idProtocol
FROM Equip,
(
SELECT idEquip as idEquipTot, MAX(readDate) OVER (PARTITION BY idEquip) maxReadDate
FROM Totalizer
)
WHERE Equip.idEquip = idEquipTot
AND Equip.lastReadDate = maxReadDate
AND idEquipoTot = xxx
Спасибо.
Решение:
SELECT DISTINCT e.idProtocol, e.idEquip, MAX(t.readDate)
OVER (PARTITION BY e.idEquip) maxReadDate
FROM Equip e
JOIN Totalizer t
ON t.idEquip = e.idEquip
WHERE e.idEquip = ?