Si ordenas descendentemente, deberás usar FIRST(), si ordenas ascendentemente, LAST()
Código SQL
[-]SELECT PUERTOS.TAG,LAST(CONTADORES.FECHA), LAST(CONTADORES.VALOR)
FROM CONTADORES,PUERTOS
WHERE
DISPOSITIVO='Contador' and
CONTADORES.NUMPUERTO=PUERTOS.NUMPUERTO AND
CONTADORES.IDEQUIPO=PUERTOS.IDEQUIPO AND
(FECHA>='2007-05-15 00:00:00' AND FECHA<'2007-05-16 00:00:00')
GROUP BY TAG
ORDER BY FECHA
o
Código SQL
[-]SELECT PUERTOS.TAG,FIRST(CONTADORES.FECHA), FIRST(CONTADORES.VALOR)
FROM CONTADORES,PUERTOS
WHERE
DISPOSITIVO='Contador' and
CONTADORES.NUMPUERTO=PUERTOS.NUMPUERTO AND
CONTADORES.IDEQUIPO=PUERTOS.IDEQUIPO AND
(FECHA>='2007-05-15 00:00:00' AND FECHA<'2007-05-16 00:00:00')
GROUP BY TAG
ORDER BY FECHA DESC
Creo que te falta la función de agregado.
También podrías parametrizar la consulta para enviarle una fecha como parámetro y calcular la fecha del día anterior, pero eso depende del motro de BBDD, y yo de MySQL no domino bastante ( ni tengo muchas ganas de mirar, ciertamente ).
Suerte y saludos