J'essaie de créer une requête qui triera les données par date et heure, trouvera l'enregistrement le plus récent et mettra à jour un autre champ de l'enregistrement en l'indiquant comme tel.
Prenez ma vie plus dure : l'heure et les données sont deux champs séparés et l'heure est aussi une chaîne de caractères.
Voici donc ce que j'ai jusqu'à présent,
UPDATE server.ESCC_HWAY_ASSETS_GULLIES_N
set CURRENT_REC = 'Y'
From server.ESCC_HWAY_ASSETS_GULLIES_N A
inner join (
SELECT GULLY_ID, Max([DATE]) AS MaxDate, MAX([TIME]) AS MaxTime
FROM server.ESCC_HWAY_ASSETS_GULLIES_N B
GROUP BY GULLY_ID, [DATE] ) B
on A.GULLY_ID = B.GULLY_ID and A.[DATE] = B.MaxDate and A.[TIME] = B.MaxTime
Il en résulte des données triées par heure et par date, mais qui mettent à jour tous les champs qu'elles trouvent, sauf aux dates où il y a deux entrées. Dans ce cas, il ne met à jour que l'enregistrement le plus récent.
Je fais des essais sur un seul enregistrement - B47605 qui donne les résultats suivants sur cette file d'attente
SELECT GULLY_ID, Max([DATE]) AS MaxDate, MAX([TIME]) AS MaxTime
FROM ESMAPADMIN.ESCC_HWAY_ASSETS_GULLIES_N B
WHERE GULLY_ID = 'B47605'
GROUP BY GULLY_ID, [DATE]
Gully_ID MaxDate MaxTime
B47605 2008-03-12 00:00:00.000 09:02:29
B47605 2008-09-19 00:00:00.000 09:51:14
B47605 2009-02-16 00:00:00.000 11:18:28
B47605 2009-08-21 00:00:00.000 12:34:45
B47605 2010-03-16 00:00:00.000 09:22:26
B47605 2010-08-25 00:00:00.000 11:19:55
B47605 2011-03-07 00:00:00.000 12:19:56
B47605 2012-05-02 00:00:00.000 20:57:54
Le résultat que j'aimerais obtenir est que seul l'enregistrement le plus récent soit retourné, donc -
Gully_ID MaxDate MaxTime
B47605 2012-05-02 00:00:00.000 20:57:54
Je ne sais pas comment passer de l'endroit où je suis à celui où je dois être, alors toute aide serait appréciée.