special select with sum

26/08/2008 - 23:03 por Alonso Vilela | Informe spam
Amigos necesito hacer un select que calcule la diferencia de de un productos
segun las altas y bajas(entradas y salidas)

la table tiene los siguienytes campos

id,date,id_prod,amount,status

la idea que en la salida deberia tener
id_prod, sumprod

Sumprod es igual sum(id_prod del status =1 ) - sum(id_prod del status=0)

Yo se como hacer indivualmente con group by para Id_prod con status=1 or 0

Pero existe alguna forma de hacerlo los dos en una sola sentencia..

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
27/08/2008 - 00:33 | Informe spam
Trata:

select
id_prod,
sum(case when status = 1 then amount else 0 end) -
sum(case when status = 0 then amount else 0 end) as Sumprod
from
tu_tabla
group by
id_prod
GO


AMB


"Alonso Vilela" wrote:

Amigos necesito hacer un select que calcule la diferencia de de un productos
segun las altas y bajas(entradas y salidas)

la table tiene los siguienytes campos

id,date,id_prod,amount,status

la idea que en la salida deberia tener
id_prod, sumprod

Sumprod es igual sum(id_prod del status =1 ) - sum(id_prod del status=0)

Yo se como hacer indivualmente con group by para Id_prod con status=1 or 0

Pero existe alguna forma de hacerlo los dos en una sola sentencia..

Muchas gracias



Respuesta Responder a este mensaje
#2 Rubén Garrigós
27/08/2008 - 00:36 | Informe spam
Hola Alonso,

Se me ocurre que restar es lo mismo que sumar un número negativo. Basándote
en esto podrías hacer algo como:

SELECT id_prod,SUM(case when status=1 then amount when status=0 then
amount*-1 end) sumprod
FROM table
GROUP BY id_prod

En el caso de ser status un tipo bit o tener únicamente los valores 1 y 0
podrías simplificar un poco la expresión case.

Rubén Garrigós
Solid Quality Mentors

"Alonso Vilela" wrote:

Amigos necesito hacer un select que calcule la diferencia de de un productos
segun las altas y bajas(entradas y salidas)

la table tiene los siguienytes campos

id,date,id_prod,amount,status

la idea que en la salida deberia tener
id_prod, sumprod

Sumprod es igual sum(id_prod del status =1 ) - sum(id_prod del status=0)

Yo se como hacer indivualmente con group by para Id_prod con status=1 or 0

Pero existe alguna forma de hacerlo los dos en una sola sentencia..

Muchas gracias



Respuesta Responder a este mensaje
#3 Alonso Vilela
27/08/2008 - 16:27 | Informe spam
fantastico

"Rubén Garrigós" wrote in message
news:
Hola Alonso,

Se me ocurre que restar es lo mismo que sumar un número negativo.
Basándote
en esto podrías hacer algo como:

SELECT id_prod,SUM(case when status=1 then amount when status=0 then
amount*-1 end) sumprod
FROM table
GROUP BY id_prod

En el caso de ser status un tipo bit o tener únicamente los valores 1 y 0
podrías simplificar un poco la expresión case.

Rubén Garrigós
Solid Quality Mentors

"Alonso Vilela" wrote:

Amigos necesito hacer un select que calcule la diferencia de de un
productos
segun las altas y bajas(entradas y salidas)

la table tiene los siguienytes campos

id,date,id_prod,amount,status

la idea que en la salida deberia tener
id_prod, sumprod

Sumprod es igual sum(id_prod del status =1 ) - sum(id_prod del status=0)

Yo se como hacer indivualmente con group by para Id_prod con status=1 or
0

Pero existe alguna forma de hacerlo los dos en una sola sentencia..

Muchas gracias



Respuesta Responder a este mensaje
#4 Alonso Vilela
27/08/2008 - 16:28 | Informe spam
gracias
"Alejandro Mesa" wrote in message
news:
Trata:

select
id_prod,
sum(case when status = 1 then amount else 0 end) -
sum(case when status = 0 then amount else 0 end) as Sumprod
from
tu_tabla
group by
id_prod
GO


AMB


"Alonso Vilela" wrote:

Amigos necesito hacer un select que calcule la diferencia de de un
productos
segun las altas y bajas(entradas y salidas)

la table tiene los siguienytes campos

id,date,id_prod,amount,status

la idea que en la salida deberia tener
id_prod, sumprod

Sumprod es igual sum(id_prod del status =1 ) - sum(id_prod del status=0)

Yo se como hacer indivualmente con group by para Id_prod con status=1 or
0

Pero existe alguna forma de hacerlo los dos en una sola sentencia..

Muchas gracias



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida