SQL Server - Duda con select Group by

   
Vista:

Duda con select Group by

Publicado por alonso (21 intervenciones) el 26/10/2007 23:57:46
select
Year ([V].[FEmision]) AS Año ,
DATENAME(month, [V].[FEmision]) AS Mes,
sum ([V].[Total]) AS Total ,
sum ([V].[Saldo]) As Saldo
/*
------------------------
Sum [C].[Importe_Cobrado]
---------------------------------------
*/

from [Ventas] [V]
/*
[Cobros] [C]
*/
group by Year ([V].[FEmision]) ,Month ([V].[FEmision]) ,DATENAME(month, [V].[FEmision])
order by Year ([V].[FEmision]) ,Month ([V].[FEmision])

con este scrip obtengo el total y saldos de ventas de cada mes , pero tambien necesito
obtener el importe cobrado en estos periodos , para eso tengo una tabla Cobros
con el campo Importe_Cobrado , he intentado hacerlo pero el monto cobrado por periodo no sale muy bien q digamos

De antemano gracias por la ayuda q me puedan dar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda con select Group by

Publicado por Isaias (3308 intervenciones) el 27/10/2007 00:31:03
¿Como se une la tabla de Cobros?, ¿Como debe hacerse la SUMA y agrupada por cuales columnas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por alonso (21 intervenciones) el 27/10/2007 17:40:50
Gracias por responder

La consulta debe reflejar el total de la ventas ,el saldo de las ventas ,y el importe cobrado , agrupados por Años -Meses en los cuales se realizo la operacion
de tal forma q quede asi

Año------Mes---Total_VentasMens---Total_SaldoVMens------Total_ImpCobradoMen
2007---Enero- 100.00--- 75.00------- 25.00
2007---Febero- 400.00-- 80.00------ 20.00
2007--Marzo--- 500.00-- 400.00----- 100.00

Total_ImporteCobrado = es la suma del campo
[Importe_Cobrado] de La Tabla [Cobros]

Ademas estoy otra cosa q puede darse el caso en el Mes de Abril hayan habido ventas por 200.00 pero no se hayan registrado cobros el total de cobros en ese periodo deberia ser Cero
2007--Abril--- 200.00-- 0.00----- 00.00

o el caso inverso que en el mes de Abril en el primer dia , se haya cobrado 50.00 (de operaciones anteriores ), y no se haya vendido nada , al realizar la consulta
2007--Abril--- 0.00-- 0.00----- 50.00

/*y al final debria mostrar estos totales , esta info es muy util */
Deuda Pendiente Suma (Total_Saldos)
Promedio de Ventas Mensuales (Total_VentasMens)
Promedio de Cobros Mensuales (Total_ImpCobradoMen)

gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por Isaias (3308 intervenciones) el 29/10/2007 17:52:28
¿Que tanto codigo llevas de T-SQL?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por alonso (21 intervenciones) el 29/10/2007 19:24:42
No entiendo bien tu pregunta a q te refieres,
el tiempo q llevo con sql ? :Casi un año
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por Isaias (3308 intervenciones) el 29/10/2007 23:04:14
No, me refiero a que tanta avanzada llevas tu query.

Puedes enviar la descripcion de tus tablas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por alonso (21 intervenciones) el 30/10/2007 17:11:01
***En Peru El IGV es lo q normalmente se conoce como I.V.A en otros paises

Tabla Ventas :
Algunas relaciones como Clientes - cobros ,Cobros - Empleado no estan incluidas aqui

CREATE TABLE [Ventas] (
[CodVenta] [numeric](18, 0) NOT NULL ,
[CodGeneral] [numeric](18, 0) NULL ,
[CodDocumento] [char] (2) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Doc_Serie] [numeric](3, 0) NOT NULL ,
[Doc_Num] [numeric](7, 0) NOT NULL ,
[FEmision] [datetime] NOT NULL ,
[CodCliente] [char] (11) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[CodEmpleado] [char] (10) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Moneda] [char] (1) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Tipo_Cambio] [decimal](18, 4) NULL ,
[Importe_bruto] [decimal](18, 8) NULL ,
[Total_bruto] [decimal](18, 2) NOT NULL ,
[Porc_Descuento] [decimal](6, 2) NULL ,
[Descuento] [decimal](18, 2) NULL ,
[Subtotal] [decimal](18, 2) NOT NULL ,
[Porc_IGV] [decimal](4, 2) NOT NULL ,
[IGV] [decimal](18, 2) NOT NULL ,
[Total] [decimal](18, 2) NOT NULL ,
[Saldo] [decimal](18, 8) NOT NULL ,
[CodLugarOp] [varchar] (6) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Comentario] [varchar] (500) COLLATE Modern_Spanish_CI_AS NULL ,
[Estado] [bit] NOT NULL ,
[Usuario] [varchar] (30) COLLATE Modern_Spanish_CI_AS NOT NULL ,
CONSTRAINT [PK_Ventas] PRIMARY KEY CLUSTERED
(
[CodVenta]
) ON [PRIMARY] ,
CONSTRAINT [BDCHK_Ventas_Moneda] CHECK ([MONEDA] = 'D' or [MONEDA] = 'S')
) ON [PRIMARY]
GO

//Tabla Cobros
CREATE TABLE [Cobros] (
[CodCobro] [numeric](18, 0) NOT NULL ,
[CodCliente] [char] (11) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[CodEmpleado] [char] (10) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[CodLugarOp] [varchar] (6) COLLATE Modern_Spanish_CI_AS NULL ,
[CodFormaPago] [char] (3) COLLATE Modern_Spanish_CI_AS NULL ,
[FCobro] [datetime] NULL ,
[Importe] [decimal](18, 8) NOT NULL ,
[Moneda] [char] (1) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Tipo_Cambio] [numeric](8, 4) NOT NULL ,
[CodBanco] [varchar] (4) COLLATE Modern_Spanish_CI_AS NULL ,
[NCheque] [char] (10) COLLATE Modern_Spanish_CI_AS NULL ,
[Anticipo] [decimal](18, 8) NULL ,
[FCobro_Cheque] [datetime] NULL ,
[Comentario] [text] COLLATE Modern_Spanish_CI_AS NULL ,
[Estado] [bit] NULL ,
[Usuario] [varchar] (30) COLLATE Modern_Spanish_CI_AS NOT NULL ,
CONSTRAINT [PK_Cobros] PRIMARY KEY CLUSTERED
(
[CodCobro]
) ON [PRIMARY] ,
CONSTRAINT [FK_Cobros_Cliente] FOREIGN KEY
(
[CodCliente]
) REFERENCES [Cliente] (
[CodCliente]
),
CONSTRAINT [FK_Cobros_Usuario] FOREIGN KEY
(
[Usuario]
) REFERENCES [Usuario] (
[Usuario]
)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

//

Detalle de Cobros
CREATE TABLE [CobrosDetalle] (
[CodCobro] [numeric](18, 0) NOT NULL ,
[CodVenta] [numeric](18, 0) NOT NULL ,
[CodDocumento] [char] (2) COLLATE Modern_Spanish_CI_AS NULL ,
[Doc_Serie] [numeric](3, 0) NULL ,
[Doc_Num] [numeric](7, 0) NULL ,
[Moneda] [char] (1) COLLATE Modern_Spanish_CI_AS NOT NULL ,
[Importe] [decimal](18, 8) NOT NULL ,
CONSTRAINT [FK_CobrosDetalle_Cobros] FOREIGN KEY
(
[CodCobro]
) REFERENCES [Cobros] (
[CodCobro]
) ON UPDATE CASCADE ,
CONSTRAINT [FK_CobrosDetalle_Ventas] FOREIGN KEY
(
[CodVenta]
) REFERENCES [Ventas] (
[CodVenta]
)
) ON [PRIMARY]
GO

Como veras en la tabla cobros hay un campo Importe q indica cuanto se cobro en dicha operacion de cobranza
ademas esta el campo fecha de cobro,

Y en la tabla CobrosDetalle , se guarda q ventas se cobraron en dicha operacion y tambien veras un campo [Importe]
ahi se guarda cuanto se cobro especificamente a dicha factura /boleta

Pero volviendo al tema lo q debo obtener en el select es el

Año--
Mes --
TotVentaEnEseMesMes -
TotSaldoEnEseMes
ImporteTotal_cobradoEnEseMes

Importe_Total_cobrado = Es el monto total cobrado en ese periodo (Año - Mes : 2007 - Enero por ejemplo)
se refiere al campo Importe de la tabla Cobros

Año------Mes---Total_VentasMens---Total_SaldoVMens------Total_ImpCobradoMen

2007---Enero- 100.00--- 75.00------- 25.00
2007---Febero- 20.00-- 80.00------ 20.00
2007--Marzo--- 500.00-- 400.00----- 100.00

Gracias por tu tiempo .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por Isaias (3308 intervenciones) el 30/10/2007 21:14:08
Veamos

Total_VentasMens =

SELECT DATEPART(yy, FEmision) AS Año, DATEPART(mm, FEmision) as Mes, SUM(Total_bruto)
FROM [Ventas]
GROUP BY DATEPART(yy, FEmision), DATEPART(mm, FEmision)

Tomo como importe Total_bruto, aunque si hay que cambiarlo o hacer alguna operacion con otros campos, tu tomas la decision, ¿Es correcto esto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por alonso (21 intervenciones) el 31/10/2007 21:46:23
Asi es Isais , es correcto
pero la sentencia sigue estando "impleta" p q le faltan el monto cobrado por mes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por Isaias (3308 intervenciones) el 01/11/2007 00:13:22
me queda bastante claro que esta INCOMPLETA, solo que estamos "step by step", ¿te dio el resultado que esperabas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por alonso (21 intervenciones) el 02/11/2007 20:04:22
Ok Isais "paso a paso"
el paso de sumar los saldos lo podemos obviar
ahora lo que quiero obtener|
es el Monto Total Cobrado Solo en ese Periodo (Año - Mes )

En la tabla Cobros tengo un campo importe ,q es el que tenemos q sumar

Saludos

Año------Mes---Total_VentasMens-----Total_ImpCobradoMes
2007---Enero- 100.00------------------- 85.00
2007---Febero- 50.00------------------- 20.00
2007--Marzo--- 60.00-- ---------------- 10.00

*algunos meses se puede vender mas , y = en los cobros
algunas veces se puede cobrar mas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por Isaias (3308 intervenciones) el 05/11/2007 18:41:14
SELECT año, mes, sum(total_impCobrado)
FROM tutabla
GROUP BY año, mes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con select Group by

Publicado por raul (1 intervención) el 22/05/2008 20:56:32
hola soy nuevo en sql
necesito hacer un consulta a una tabla donde me sume los totales, pero necesito que me los agrupe por años, me dijieron que use un group by con un year pero no tengo ni idea como usarlo en una instruccion sql.
por favor ayunden me con la sentencia sql como se escribe.

gracias .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar