# next_value ❇️

La función next_value es una función de ventana que devuelve el valor del siguiente 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 siguiente.

select 
  year(fecha) anyo, 
  month(fecha) mes,
  sum(unidades) ventas,
  next_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,
  next_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 FOLLOWING AND 1 FOLLOWING) AS nextValue
FROM dbo.lb_ventas
GROUP BY
  year(fecha),
  month(fecha)