J'ai du mal à essayer d'optimiser cette requête avec OVER (PARTITION BY ...) car le champ id de la table contenant le maxDate doit se rapporter à l'autre table.Comment puis-je optimiser une requête de date MAX relative à une autre entité de table?
La requête de travail est:
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
Ce que je suis en train de faire est quelque chose près, mais cela n'a pas fonctionné:
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
Merci.
La solution:
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 = ?
Pourriez-vous s'il vous plaît fournir quelques exemples de données et l'ensemble de résultats que vous souhaitez obtenir? – Quassnoi