SQL - Select con Sum

 
Vista:

Select con Sum

Publicado por Damian (26 intervenciones) el 30/09/2008 03:32:27
Tengo un problema con una consulta, lo que yo quiero hacer en la misma es que me traiga las Secciones o Categorias con su totales que se fueron facturando según un rango de fechas que ingresa el usuario el tema es que uso varias tablas y lo raro es que los totales me los trae pero como si multiplicara cada total por 10. La consulta es :

Select distinct C.Descripcion,round(sum(D.Total),2)[Total] from Categoria C,Articulos A,DetalleArticulo DA,Detalles D,Facturacion F,Pedidos P where C.CodCat=A.CodCat and A.CodArt=DA.CodArt and DA.CodDetArt=D.CodDetArt and P.IdPedido in(select D.IdPedido from Detalles D) and P.FechaEntrega Between convert(datetime,'17/09/2008',103) and convert(datetime,'29/09/2008',103) and F.IdFact in(select D.IdFact from Detalles D)and F.FechaHora Between convert(datetime,'17/09/2008',103) and
convert(datetime,'29/09/2008',103) and P.Facturado='NO' group by C.Descripcion order by 2 desc

por ejemplo en Ferreteria me trae: 850.6 cuando en realidad tendria que traerme 85.06 y asi pasa con las demas categorias le agrega un digito mas parece.........espero se entienda la consulta
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:Select con Sum

Publicado por Isaias (5072 intervenciones) el 30/09/2008 16:49:00
Y si nos das un script con la creacion de la(s) tabla(s) y la inserccion de algunos registros para hacer un test de tu consulta y asi nos indicas en donde es que no esta haciendo lo que debe hacer, nos ahorrarias mucho trabajo.
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:Select con Sum

Publicado por Damian (26 intervenciones) el 30/09/2008 17:57:19
Las tablas son:
Categoria: CodCat,Descripcion y Baja
Articulos:CodArt,Descripcion,CodCat y Baja
DetalleArticulo:CodDetArt,CodArt,CodMarca,Detalle,Precio,PcioLista,Existencia,Critico y Baja
Detalles:IDFact(NULL),IdPedido(NULL),CodDetArt,Cantidad,PcioUnit,Total y Baja
Facturacion:IdFact,Comprobante,Tipo,CodIva,CodPago,CodCli,CodEmp,FechaHora,Descuento,IVA,TotalFact y Baja
Pedidos:IdPedido,FechaPedido,FechaEntrega,CodCli,CodEmp,CodPago,Descuento,TotalPed,IdFact(NULL),Facturado(pone SI o NO),Enviado(SI o NO) y Baja

Esas son las tablas de mi consulta y el rango de fechas la tengo que traer de las tablas Facturacion(FechaHora) y la tabla Pedidos(FechaEntrega), siempre agrupado por Categoria, pero si un pedido fue facturado(Facturado=SI) ese no lo tiene que sumar ya que va a traer el de la tabla Facturacion.
Bueno espero que se entienda mejor ahora. 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

RE:Select con Sum

Publicado por Damian (26 intervenciones) el 30/09/2008 19:29:53
Ya arregle la consulta haciendo una union pero ahora me trae las categorias repetidas y por mas que ponga distinct en cda select no tiene sentido ya que las categorias dan totales distintos, segun se traiga de pedidos o de facturacion la consulta me quedo:

Select C.Descripcion,round(sum(D.Total),2)[Total] from Categoria C,Articulos A,DetalleArticulo DA,Detalles D where C.CodCat=A.CodCat and A.CodArt=DA.CodArt and DA.CodDetArt=D.CodDetArt and D.IdFact in(select F.IdFact from Facturacion F where F.FechaHora Between convert(datetime,'16/09/2008',103) and convert(datetime,'30/09/2008',103)) group by C.Descripcion
union
Select C.Descripcion,round(sum(D.Total),2)[Total] from Categoria C,Articulos A,DetalleArticulo DA,Detalles D where C.CodCat=A.CodCat and A.CodArt=DA.CodArt and DA.CodDetArt=D.CodDetArt and D.IdPedido in(select P.IdPedido from Pedidos P where P.FechaEntrega Between convert(datetime,'16/09/2008',103) and convert(datetime,'30/09/2008',103)and P.Facturado='NO') group by C.Descripcion order by 2 desc

y me devuelve:

Descripcion Total

Aberturas 357.6
Pintureria 90
PVC 73
Ferreteria 71.76
Aberturas 60.7
Ferreteria 13.3
PVC 13
Electricidad 9.3
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:Select con Sum

Publicado por Damian (26 intervenciones) el 30/09/2008 20:01:12
Ya arregle la consulta haciendo una union pero ahora me trae las categorias repetidas y por mas que ponga distinct en cda select no tiene sentido ya que las categorias dan totales distintos, segun se traiga de pedidos o de facturacion la consulta me quedo:

Select C.Descripcion,round(sum(D.Total),2)[Total] from Categoria C,Articulos A,DetalleArticulo DA,Detalles D where C.CodCat=A.CodCat and A.CodArt=DA.CodArt and DA.CodDetArt=D.CodDetArt and D.IdFact in(select F.IdFact from Facturacion F where F.FechaHora Between convert(datetime,'16/09/2008',103) and convert(datetime,'30/09/2008',103)) group by C.Descripcion
union
Select C.Descripcion,round(sum(D.Total),2)[Total] from Categoria C,Articulos A,DetalleArticulo DA,Detalles D where C.CodCat=A.CodCat and A.CodArt=DA.CodArt and DA.CodDetArt=D.CodDetArt and D.IdPedido in(select P.IdPedido from Pedidos P where P.FechaEntrega Between convert(datetime,'16/09/2008',103) and convert(datetime,'30/09/2008',103)and P.Facturado='NO') group by C.Descripcion order by 2 desc

y me devuelve:

Descripcion Total

Aberturas 357.6
Pintureria 90
PVC 73
Ferreteria 71.76
Aberturas 60.7
Ferreteria 13.3
PVC 13
Electricidad 9.3
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