Home/Blog/Blogueros/Javier Lusarreta/Sql Server: Agrupar una tabla por un periodo de fechas correspondiente (día,semana,mes y año)

` Javier Lusarreta

Sql Server: Agrupar una tabla por un periodo de fechas correspondiente (día,semana,mes y año)

[ 13/04/2015 3:35:48 - Modificado(13/04/2015 0:00:00)
a Javier Lusarreta

Estos días quería sacar una estadísticas por fechas. Cuáles eran los totales de las sumas por día de venta, por semana, por mes y por año. Aquí os pongo las sentencias que utilicé para dicho fin.

A menudo quieres agrupar en Sql Server un sentencia por una fecha determinada, pero el objetio es agruparlo por día completo, o por mes.. Para sacar datos estadísticos de la aplicación. En mi caso, quería hacer un procedimiento almacenado que devolviera dichos datos.

Espero esto te sirva.

Agrupar por día

Si quieres agrupar todos los datos para un día determindado, sin tener en cuenta hora del día en que se produjo, utiliza:

SELECT  Fecha = DATEADD(DAY, DATEDIFF(DAY, 0, c.Fecha), 0), 

        sum(c.p_Base) as p_BaseTotal
from pedido c  where c.Fecha>=@fechaInicio AND c.Fecha<=@fechaFin And c.Estado_Compra_Cod=0
GROUP BY DATEADD(DAY, DATEDIFF(DAY, 0, c.Fecha), 0);
 

Agrupar por semana

Si quieres agrupar todos los datos para una semana determindada, sin tener en cuenta hora del día en que se produjo, utiliza:

SELECT  Fecha = DATEADD(DAY, DATEDIFF(WK, 0, c.Fecha), 0), 

        sum(c.p_Base) as p_BaseTotal
from pedido c  where c.Fecha>=@fechaInicio AND c.Fecha<=@fechaFin And c.Estado_Compra_Cod=0
GROUP BY DATEADD(DAY, DATEDIFF(WK, 0, c.Fecha), 0);
 

Agrupar por mes

Si quieres agrupar todos los datos para un més determindado, sin tener en cuenta hora del día en que se produjo, utiliza:

SELECT  Fecha = DATEADD(DAY, DATEDIFF(MONTH, 0, c.Fecha), 0), 

        sum(c.p_Base) as p_BaseTotal
from pedido c  where c.Fecha>=@fechaInicio AND c.Fecha<=@fechaFin And c.Estado_Compra_Cod=0
GROUP BY DATEADD(DAY, DATEDIFF(MONTH, 0, c.Fecha), 0);
 

Agrupar por Año

Si quieres agrupar todos los datos para un año determindado, sin tener en cuenta hora del día en que se produjo, utiliza

SELECT  Fecha = DATEADD(DAY, DATEDIFF(YEAR, 0, c.Fecha), 0), 

        sum(c.p_Base) as p_BaseTotal
from pedido c  where c.Fecha>=@fechaInicio AND c.Fecha<=@fechaFin And c.Estado_Compra_Cod=0
GROUP BY DATEADD(DAY, DATEDIFF(YEAR, 0, c.Fecha), 0);

 

13/04/2015 3:35:48 - Modificado(13/04/2015 0:00:00)
Este sitio web utiliza cookies propias y de terceros para optimizar tu navegación, adaptarse a tus preferencias y realizar labores analíticas. Al continuar navegando aceptas nuestra Política de Cookies. ACEPTAR