Muchas veces puedes necesitar obtener el último valor de los registrados, por ejemplo:

  • ¿cuál fue el último precio de compra de este producto?
  • ¿cuándo fue la última vez que le cobramos a este cliente?
  • ¿cuándo fue la última vez que cambiamos el precio de venta de este producto?
  • ¿cuándo fue la última vez que vendimos este producto?
  • ¿cuándo fue la última vez que este profesor se ausentó?
  • ¿cuándo fue la última vez que pagamos este impuesto?
  • ¿cuánto pagamos por este impuesto la última vez?

Para responder a esas preguntas debes ordenar la consulta en forma descendente y obtener solamente la primera fila. Como la consulta estará ordenada en forma descendente, en la primera fila se encontrarán los datos más nuevos.

Ejemplo:

Queremos saber cuando fue la última vez que le cobramos al cliente que tiene el identificador 2457.

SELECT
   COB_FECHAX
FROM
   COBRANZAS
WHERE
   COB_IDECLI = 2457
ORDER BY
   COB_FECHAX DESC
ROWS
   1

COB_FECHAX es la columna donde se guardan las fechas de las cobranzas.

COB_IDECLI es la columna donde se guardan los identificadores de los clientes.

COBRANZAS es la tabla donde se guardan las cobranzas realizadas.

Si el resultado es NULL eso significará que nunca se le ha cobrado a este cliente. Si el resultado es distinto de NULL entonces esa será la fecha de la última cobranza.

Para que esta consulta sea muy rápida aunque tengas millones de registros en tu tabla de COBRANZAS deberás crear un índice descendente sobre la columna COB_FECHAX. Si tienes un índice ascendente ese no te servirá porque el Firebird no lo utilizará.

Artículo relacionado:

El índice del blog Firebird21

Anuncios