# previous_value ❇️

La función previous_value es una función de ventana que devuelve el valor del anterior registro del rango.

Requiere la cláusula ORDER BY en la partición OVER.

Se puede usar tanto la sintaxis OVER del SQL estándar como la sintaxis compacta propia de Crono.

# Ejemplo

La siguiente consulta devuelve las ventas de cada mes y las ventas en el mes siguanterior.

select 
  year(fecha) anyo, 
  month(fecha) mes,
  sum(unidades) ventas,
  previous_value(ventas) over (order by anyo,mes) nextValue,
from dbo.lb_ventas
group by all

La misma consulta se puede construir con la sintaxis compacta del OVER:

select 
  year(fecha) anyo, 
  month(fecha) mes,
  sum(unidades) ventas,
  previous_value(ventas order by anyo,mes) nextValue,
from dbo.lb_ventas
group by all

La consulta SQL generada en ambos casos es:

SELECT
  year(fecha) AS anyo,
  month(fecha) AS mes,
  sum(unidades) AS ventas,
  max(sum(unidades)) OVER (ORDER BY year(fecha),month(fecha) ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS nextValue
FROM dbo.lb_ventas
GROUP BY
  year(fecha),
  month(fecha)

# Comentarios

La función next_value devuelve el valor del registro previo.