Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta sql Compleja (https://www.clubdelphi.com/foros/showthread.php?t=55535)

oca 18-04-2008 22:52:43

Consulta sql Compleja
 
Hola Gente, estoy ante un problema. Uso firebird 2 y tengo una tabla con la siguiente estructura:

Codigo: VarChar(13)
Rubro: INteger
Fabrica: VarChar(2)
Cantidad: INteger
Precio_Venta: Decimal
Costo: Decimal

La idea es hacer una consulta que obtenga la cantidad vendida por rubro y fabrica, hasta ahi vamos perfecto, seria algo así:

Select Rubro, Fabrica, Sum(Cantidad)
from Tabla
Group By Rubro, Fabrica

Pero que pasa si quiero que sume la cantidad, el precio de venta y el costo, pero que no sume al precio de venta los articulos que tienen costo 0, pero que considere la suma de la cantidad aunque el costo sea cero

Alguna idea?

Gracias.

juanelo 19-04-2008 01:30:48

Código SQL [-]
 Select Rubro, Fabrica, 
Sum(Cantidad) as Suma_Cantidad,
sum( IIF(Precio_Venta > 0.0 ,Precio_Venta,0.0) ) as Suma_Precio,
sum(Costo) as Suma_Costo
 from Tabla 
 Group By Rubro, Fabrica
Ojo, que esto funciona desde el firebird 2.0, que fue lo que mencionas en tu hilo.

roman 19-04-2008 02:09:32

Cita:

Empezado por juanelo
Código SQL [-]
sum( IIF(Precio_Venta > 0.0 ,Precio_Venta,0.0) )

Bueno, pero, ¿qué más da? Si el precio de venta es cero, se suma un cero y la suma total queda igual ¿no?

// Saludos

oca 19-04-2008 13:17:56

Cita:

Empezado por roman (Mensaje 281166)
Bueno, pero, ¿qué más da? Si el precio de venta es cero, se suma un cero y la suma total queda igual ¿no?

// Saludos

Roman: No, no es lo mismo, ya que lo que tengo que evitar es sumar el precio de venta cuando el costo es cero, y sumar la cantidad en cualquiera de los casos.

Juanelo, gracias por tu respuesta, ahora mismo la pruebo

Ferrari 20-04-2008 03:01:19

buaaa...hay esta roman, por opinar ya nos dieron carpetazo de ke 'no digas nada' porke era CERO..jajaja ntc es broma, saludos

oca 21-04-2008 15:01:33

Juanelo, funciono perfecto, gracias!.
Por pura curiosidad, ¿ había alguna otra manera de solucionarlo sin usar IIF ?, es decir usando las funciones de suma y agrupamiento nativas del sql.

juanelo 21-04-2008 16:13:54

Cita:

Empezado por oca (Mensaje 281397)
Juanelo, funciono perfecto, gracias!.
Por pura curiosidad, ¿ había alguna otra manera de solucionarlo sin usar IIF ?, es decir usando las funciones de suma y agrupamiento nativas del sql.

Que tal Oca, me alegro que te haya servido, con respecto a tu pregunta, pues se puede intentar con tablas derivadas (que ya son estandar SQL), pero la verdad es que no le he intentado, o bien con un CASE.

juanelo 21-04-2008 16:14:29

Cita:

Empezado por roman (Mensaje 281166)
Bueno, pero, ¿qué más da? Si el precio de venta es cero, se suma un cero y la suma total queda igual ¿no?

// Saludos

:confused:

roman 21-04-2008 16:35:12

¿A qué se debe la cara? Por lo que veo, el condicional es

Código SQL [-]
sum( IIF(Costo > 0.0 ,Precio_Venta,0.0) )

pero en ese momento vi que habías puesto

Código SQL [-]
sum( IIF(Precio_Venta > 0.0 ,Precio_Venta,0.0) )

y de ahí mi comentario.

// Saludos

juanelo 21-04-2008 16:39:22

Cita:

Empezado por roman (Mensaje 281437)
¿A qué se debe la cara? Por lo que veo, el condicional es

Código SQL [-]sum( IIF(Costo > 0.0 ,Precio_Venta,0.0) )


pero en ese momento vi que habías puesto

Código SQL [-]sum( IIF(Precio_Venta > 0.0 ,Precio_Venta,0.0) )


y de ahí mi comentario.

// Saludos

Absolutamente de acuerdo, y la cara es porque ni yo mismo habia visto el error, o sea, de confusión.


La franja horaria es GMT +2. Ahora son las 05:02:31.

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