PDA

Ver la Versión Completa : Estadisticas de Ventas


CoCaInE
03-01-2007, 09:29:17
Estoy Realizando un sistema de facturacion en donde debo sacar la estadisticas de las ventas brutas durante los 12 meses del año y presentarlo en un chart osea en un grafico estadistico, Estoy utilizando Sql Server como motor de base de datos y la tabla de caja como campos Tengo Fecha_Venta,Venta_Efectivo,Venta_Tarjeta,Venta_Credito que en este caso la ventas brutas serian la suma de todos los campos mi pregunta es la siguiente como puedo totalizar o sacar la sumatoria de cada uno de los meses por separado y presentarlo en un chart:( ?

Ñuño Martínez
03-01-2007, 11:27:23
Creo que esta pregunta es un tanto general, pero si estás utilizando SQL podrías utilizar la función "SUM" y "GROUP BY" para obtener los valores. Ahora mismo no recuerdo, pero creo que Delphi 6 incluía componentes para crear diagramas, o tal vez fue un componente que compró la empresa para que trabajaba...

fjcg02
03-01-2007, 15:32:45
Prueba esto adecuandolo a los campos de tu tabla

select 'Tareas Cerradas' as Consulta, Tecnico,
sum( case datepart("month", f_fin) when 1 then 1 else 0 end) as Enero,
sum( case datepart("month", f_fin) when 2 then 1 else 0 end) as Febrero,
sum( case datepart("month", f_fin) when 3 then 1 else 0 end) as Marzo,
sum( case datepart("month", f_fin) when 4 then 1 else 0 end) as Abril,
sum( case datepart("month", f_fin) when 5 then 1 else 0 end) as Mayo,
sum( case datepart("month", f_fin) when 6 then 1 else 0 end) as Junio,
sum( case datepart("month", f_fin) when 7 then 1 else 0 end) as Julio,
sum( case datepart("month", f_fin) when 8 then 1 else 0 end) as Agosto,
sum( case datepart("month", f_fin) when 9 then 1 else 0 end) as Septiembre,
sum( case datepart("month", f_fin) when 10 then 1 else 0 end) as Octubre,
sum( case datepart("month", f_fin) when 11 then 1 else 0 end) as Noviembre,
sum( case datepart("month", f_fin) when 12 then 1 else 0 end) as Diciembre
/*cast (sum( T.Duracion)/3600.00 as decimal(10,2)) as Tiempo_horas */
FROM ahd.tareas
where
f_fin between '01/01/2005' and '12/31/2005'
group by Tecnico

Por lo menos tendrás el origen de los datos del gráfico.

Suerte

menavas
03-01-2007, 18:14:12
Buenos dias amigo, prueba con este query


select * from (SELECT cast (DATEPART("month", Fecha_Venta) as
CHAR (2)) + '/' + cast ( DATEPART("year", Fecha_Venta) as CHAR (4)) AS FIELD_1, sum(Venta_Efectivo+Venta_Tarjeta+Venta_Credito)
AS FIELD_2 FROM loans GROUP BY
cast (DATEPART("month", Fecha_Venta) as CHAR (2)) + '/' + cast (DATEPART("year", Fecha_Venta) as CHAR (4))) as TEMP
order by SUBSTRING(field_1, 4, 4),cast (ltrim(rtrim(SUBSTRING(field_1, 1, 2))) as integer)

CoCaInE
04-01-2007, 13:38:11
Prueba esto adecuandolo a los campos de tu tabla


Código SQL [-] (http://www.clubdelphi.com/foros/#)select 'Tareas Cerradas' as Consulta, Tecnico,
sum( case datepart("month", f_fin) when 1 then 1 else 0 end) as Enero,
sum( case datepart("month", f_fin) when 2 then 1 else 0 end) as Febrero,
sum( case datepart("month", f_fin) when 3 then 1 else 0 end) as Marzo,
sum( case datepart("month", f_fin) when 4 then 1 else 0 end) as Abril,
sum( case datepart("month", f_fin) when 5 then 1 else 0 end) as Mayo,
sum( case datepart("month", f_fin) when 6 then 1 else 0 end) as Junio,
sum( case datepart("month", f_fin) when 7 then 1 else 0 end) as Julio,
sum( case datepart("month", f_fin) when 8 then 1 else 0 end) as Agosto,
sum( case datepart("month", f_fin) when 9 then 1 else 0 end) as Septiembre,
sum( case datepart("month", f_fin) when 10 then 1 else 0 end) as Octubre,
sum( case datepart("month", f_fin) when 11 then 1 else 0 end) as Noviembre,
sum( case datepart("month", f_fin) when 12 then 1 else 0 end) as Diciembre
/*cast (sum( T.Duracion)/3600.00 as decimal(10,2)) as Tiempo_horas */
FROM ahd.tareas
where
f_fin between '01/01/2005' and '12/31/2005'
group by Tecnico




Por lo menos tendrás el origen de los datos del gráfico.

Suerte

realmente soy un poco novato en sql :o me podrias hacerme el favor de explicarme el codigo para saber que sustituir:confused:

fjcg02
04-01-2007, 13:56:25
Creo que con esto podrás visualizar en un db grid los datos que necesitas.

Qué hace: El case mira que el mes de la fecha sea 1, 2, 3, ...12 para ajustar a la columna correspondiente la cantidad.
Si se cumple, suma el valor del campo que nos ocupa (efectivo, credito, tarjeta) y lo suma. Si no, suma 0

Hacemos una union de los tres tipos de venta y tenemos todo perfecto.

Puede que hay que ajustar algo ya que no tengo SQL Server ni analizador de SQL, pero algo tendrás que hacer tú ;.) ...
Además tendrás que parametrizar la query para que las fechas las puedas poner por Tedit o similar

Suerte



select 'Ventas Efectivo' as TipoVenta,
sum( case datepart("month", fecha_venta) when 1 then Venta_Efectivo else 0 end) as Enero,
sum( case datepart("month", fecha_venta) when 2 then Venta_Efectivo else 0 end) as Febrero,
sum( case datepart("month", fecha_venta) when 3 then Venta_Efectivo else 0 end) as Marzo,
sum( case datepart("month", fecha_venta) when 4 then Venta_Efectivo else 0 end) as Abril,
sum( case datepart("month", fecha_venta) when 5 then Venta_Efectivo else 0 end) as Mayo,
sum( case datepart("month", fecha_venta) when 6 then Venta_Efectivo else 0 end) as Junio,
sum( case datepart("month", fecha_venta) when 7 then Venta_Efectivo else 0 end) as Julio,
sum( case datepart("month", fecha_venta) when 8 then Venta_Efectivo else 0 end) as Agosto,
sum( case datepart("month", fecha_venta) when 9 then Venta_Efectivo else 0 end) as Septiembre,
sum( case datepart("month", fecha_venta) when 10 then Venta_Efectivo else 0 end) as Octubre,
sum( case datepart("month", fecha_venta) when 11 then Venta_Efectivo else 0 end) as Noviembre,
sum( case datepart("month", fecha_venta) when 12 then Venta_Efectivo else 0 end) as Diciembre
FROM ahd.tareas
where
fecha_venta between '01/01/2006' and '12/31/2006'
group by tipoventa

UNION

select 'Ventas Credito' as TipoVenta,
sum( case datepart("month", fecha_venta) when 1 then Venta_Credito else 0 end) as Enero,
sum( case datepart("month", fecha_venta) when 2 then Venta_Credito else 0 end) as Febrero,
sum( case datepart("month", fecha_venta) when 3 then Venta_Credito else 0 end) as Marzo,
sum( case datepart("month", fecha_venta) when 4 then Venta_Credito else 0 end) as Abril,
sum( case datepart("month", fecha_venta) when 5 then Venta_Credito else 0 end) as Mayo,
sum( case datepart("month", fecha_venta) when 6 then Venta_Credito else 0 end) as Junio,
sum( case datepart("month", fecha_venta) when 7 then Venta_Credito else 0 end) as Julio,
sum( case datepart("month", fecha_venta) when 8 then Venta_Credito else 0 end) as Agosto,
sum( case datepart("month", fecha_venta) when 9 then Venta_Credito else 0 end) as Septiembre,
sum( case datepart("month", fecha_venta) when 10 then Venta_Credito else 0 end) as Octubre,
sum( case datepart("month", fecha_venta) when 11 then Venta_Credito else 0 end) as Noviembre,
sum( case datepart("month", fecha_venta) when 12 then Venta_Credito else 0 end) as Diciembre
FROM ahd.tareas
where
fecha_venta between '01/01/2006' and '12/31/2006'
group by tipoventa

UNION

select 'Ventas Tarjeta' as TipoVenta,
sum( case datepart("month", fecha_venta) when 1 then Venta_Tarjeta else 0 end) as Enero,
sum( case datepart("month", fecha_venta) when 2 then Venta_Tarjeta else 0 end) as Febrero,
sum( case datepart("month", fecha_venta) when 3 then Venta_Tarjeta else 0 end) as Marzo,
sum( case datepart("month", fecha_venta) when 4 then Venta_Tarjeta else 0 end) as Abril,
sum( case datepart("month", fecha_venta) when 5 then Venta_Tarjeta else 0 end) as Mayo,
sum( case datepart("month", fecha_venta) when 6 then Venta_Tarjeta else 0 end) as Junio,
sum( case datepart("month", fecha_venta) when 7 then Venta_Tarjeta else 0 end) as Julio,
sum( case datepart("month", fecha_venta) when 8 then Venta_Tarjeta else 0 end) as Agosto,
sum( case datepart("month", fecha_venta) when 9 then Venta_Tarjeta else 0 end) as Septiembre,
sum( case datepart("month", fecha_venta) when 10 then Venta_Tarjeta else 0 end) as Octubre,
sum( case datepart("month", fecha_venta) when 11 then Venta_Tarjeta else 0 end) as Noviembre,
sum( case datepart("month", fecha_venta) when 12 then Venta_Tarjeta else 0 end) as Diciembre
FROM ahd.tareas
where
fecha_venta between '01/01/2006' and '12/31/2006'
group by tipoventa