Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Estadisticas de Ventas (https://www.clubdelphi.com/foros/showthread.php?t=38878)

CoCaInE 03-01-2007 09:29:17

Estadisticas de Ventas
 
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

Código SQL [-]
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
Código SQL [-]
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

Cita:

Empezado por fjcg02
Prueba esto adecuandolo a los campos de tu tabla


Código SQL [-]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


Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 11:04:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi