Discussion:
"SQL, sumar positivos y sumar negativos"
Juan Carlos O.
2013-05-29 10:01:07 UTC
Permalink
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Juan Carlos Paredes
2013-05-29 10:19:56 UTC
Permalink
Select sum((case when campo>0 then campo else 0 end)) as positivos, sum((case when campo<0 then campo else 0 end)) as negativos from fichero where condición group by campo

Saludos.

Juan Carlos.

De: Juan Carlos O. [mailto:***@mixmail.com]
Enviado el: miércoles, 29 de mayo de 2013 12:01
Para: forum.help400
Asunto: "SQL, sumar positivos y sumar negativos"


Buenos dias compañeros.

En un fichero tengo un campo importe que puede ser positivo o negativo. Tengo que calcular, por SQL, la suma de los importes positivos y la suma de los importes negativos, por separado, dos totales. ¿Se puede hacer en una sentencia de SQL o tengo que hacer dos, un para los > 0 y otra para < 0?

Mas o menos lo que necesito es algo así, mas o menos:

Select sum(positivos), sum(negativos), campo FROM fichero WHERE cualquier condicion GROUP BY campo.

Mucha gracia a todos y saludos.


[Loading Image...]
[Loading Image...] [Loading Image...]
[Loading Image...] [Loading Image...] [Loading Image...] <http://es-es.facebook.com/editorialeverest> [Loading Image...] <http://twitter.com/ed_everest>
De acuerdo con la Ley orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal, le informamos que los datos que nos facilite podrían ser incluidos en los ficheros de *GRUPO EVEREST con fines comerciales, contractuales y publicitarios y, a tal efecto, serán cedidos a otras empresas del Grupo Everest dedicadas a actividades de impresión, encuadernación, edición, publicación, distribución y venta de libros y otra clase de publicaciones. Sus datos se presumen veraces mientras no nos comunique lo contrario. Podrá ejercitar sus derechos de acceso, rectificación, cancelación y oposición en la siguiente dirección, carretera León - A Coruña, km.5, s/n, código postal 24010 (León). GRUPO EVEREST está integrado por EDITORIAL EVEREST, S.A, EVEREST DE EDICIONES Y DISTRIBUCIÓN, S.L., LA BOUTIQUE DEL LIBRO Y DEL OCIO, S.L., GRUPO EVERHOUSE, S.L., EDITORIAL EVEREST ANDALUCÍA, S.L., EDICIONES GAVIOTA, S.L., EDICIONES CADÍ, S.L., EDITORIAL EVERGRÁFICAS, S.L., GRUPO EVEREST DE COMUNICACIÓN, S.L., EDITORIAL EVEREST GALICIA, S.L., AIZKORRI ARGITALETXEA, S.L. EDITORIAL EVEREST MEXICANA, S.A. de C.V. y "COMERCIAL LUJOAN, S.A. de C.V. Le informamos, como destinatario de este mensaje, que el correo electrónico y las comunicaciones por medio de Internet no permiten asegurar ni garantizar la confidencialidad de los mensajes transmitidos, así como tampoco su integridad o su correcta recepción, por lo que EDITORIAL EVEREST, S.A. y el resto de empresas del Grupo Everest no asume responsabilidad alguna por tales circunstancias. Si no consintiese en la utilización del correo electrónico o de las comunicaciones vía Internet le rogamos nos lo comunique y lo ponga en nuestro conocimiento de manera inmediata. Este mensaje va dirigido, de manera exclusiva, a su destinatario y contiene información confidencial y sujeta al secreto profesional, cuya divulgación no está permitida por la ley. En caso de haber recibido este mensaje por error, le rogamos que, de forma inmediata, nos lo comunique mediante correo electrónico remitido a nuestra atención o a través del teléfono 902123400 y proceda a su eliminación, así como a la de cualquier documento adjunto al mismo. Asimismo, le comunicamos que la distribución, copia o utilización de este mensaje, o de cualquier documento adjunto al mismo, cualquiera que fuera su finalidad, están prohibidas por la ley. El uso y contenido de los correos electrónicos remitidos con direcciones bajo el dominio de "everest .es" serán exclusivamente de ámbito profesional. Las opiniones de índole política, moral o religiosa que pueden ser vertidas en los correos electrónicos remitidos con direcciones bajo aquel dominio, serán responsabilidad exclusiva de su autor, exonerando de cualquier responsabilidad a la empresa.
Carlos MARTIN ANTON
2013-05-29 10:24:18 UTC
Permalink
Hola



Lo puedes hacer con un CASE. Quedaría algo como:



SELECT SUM(CASE WHEN CAMPO > 0 THEN CAMPO) AS POSITIVOS,

SUM(CASE WHEN CAMPO < 0 THEN CAMPO) AS NEGATIVOS

FROM FICHERO



Luego añades los WHERE que necesites y si pones algún campo mas aparte de los totales tendrás que poner el GROUP correspondiente



Saludos



________________________________
De: forum.help400-bounces-mdtS6lScdvwwdAU+I4PiffU/***@public.gmane.org [forum.help400-***@listas.combios.es] en nombre de Juan Carlos O. [jc400-***@public.gmane.org]
Enviado el: miércoles, 29 de mayo de 2013 12:01
Para: forum.help400
Asunto: "SQL, sumar positivos y sumar negativos"


Buenos dias compañeros.

En un fichero tengo un campo importe que puede ser positivo o negativo. Tengo que calcular, por SQL, la suma de los importes positivos y la suma de los importes negativos, por separado, dos totales. ¿Se puede hacer en una sentencia de SQL o tengo que hacer dos, un para los > 0 y otra para < 0?

Mas o menos lo que necesito es algo así, mas o menos:

Select sum(positivos), sum(negativos), campo FROM fichero WHERE cualquier condicion GROUP BY campo.

Mucha gracia a todos y saludos.


AVISO: Este mensaje se envía desde el sistema de correo-e de empresa del Grupo Banco Popular. Contiene, por lo tanto, secretos de empresa tutelados por las leyes de la Unión Europea y otros estados. Si Ud. lo recibe por error o no es una de las personas indicadas en el encabezamiento, deberá destruirlo sin copiarlo ni comunicarlo, e informar inmediatamente por correo-e al emisor del mensaje. Las personas y entidades que violen sus deberes de confidencialidad podrán ser perseguidas ante los Tribunales de Justicia al amparo de la legislación civil, penal y administrativa nacional e internacional.
.....................................................................
NOTICE: BPE Group informs you that this message has been sent from its corporate e-mail network. It contains business secrets protected under the laws of European Union and other territories. If you receive it by mistake or you are not one of the intended recipients of the message, you are legally obliged to delete the message, to keep its contents secret and to avoid any use thereof. Furthermore, you are kindly requested to report immediately the incident to the sender. People and organizations that breach confidentiality duties may be prosecuted before Courts according to applicable national and international civil, criminal and administrative legislation.
P Antes de imprimir este e-mail piense bien si es necesario hacerlo.
FERNANDO MURU ADURIZ
2013-05-29 10:36:29 UTC
Permalink
Podría ser algo como

SELECT sum(Case When IMPORTE > 0 Then IMPORTE Else 0 End) SUMPOS,
sum(Case When IMPORTE < 0 Then IMPORTE Else 0 End) SUMNEG,
CAMPO
FROM fichero WHERE cualquier condicion GROUP BY campo.

Saludos,
F.Muru


De: forum.help400-***@listas.combios.es [mailto:forum.help400-***@listas.combios.es] En nombre de Juan Carlos O.
Enviado el: miércoles, 29 de mayo de 2013 12:01
Para: forum.help400
Asunto: "SQL, sumar positivos y sumar negativos"


Buenos dias compañeros.

En un fichero tengo un campo importe que puede ser positivo o negativo. Tengo que calcular, por SQL, la suma de los importes positivos y la suma de los importes negativos, por separado, dos totales. ¿Se puede hacer en una sentencia de SQL o tengo que hacer dos, un para los > 0 y otra para < 0?

Mas o menos lo que necesito es algo así, mas o menos:

Select sum(positivos), sum(negativos), campo FROM fichero WHERE cualquier condicion GROUP BY campo.

Mucha gracia a todos y saludos.
f***@public.gmane.org
2013-05-29 10:57:16 UTC
Permalink
Hola Juan Carlos

Prueba esto
Select sum(positivos) -sum(negativos) as total, sum(positivos), sum(negativos), campo FROM fichero WHERE cualquier condicion GROUP BY campo.

Saludos
----- Original Message -----
From: Juan Carlos O.
To: forum.help400
Sent: Wednesday, May 29, 2013 12:01 PM
Subject: "SQL, sumar positivos y sumar negativos"


Buenos dias compañeros.

En un fichero tengo un campo importe que puede ser positivo o negativo. Tengo que calcular, por SQL, la suma de los importes positivos y la suma de los importes negativos, por separado, dos totales. ¿Se puede hacer en una sentencia de SQL o tengo que hacer dos, un para los > 0 y otra para < 0?

Mas o menos lo que necesito es algo así, mas o menos:

Select sum(positivos), sum(negativos), campo FROM fichero WHERE cualquier condicion GROUP BY campo.

Mucha gracia a todos y saludos.






--------------------------------------------------------------------------------


____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.
Zitro forum.help400
2013-05-29 11:12:06 UTC
Permalink
Buenos días

Para sacar un registro con los positivos y otro con los negativos:

SELECT Sum(Campo) FROM Fichero GROUP BY Campo>0

Para todo en un solo registro:

SELECT (CASE WHEN Campo >0 THEN Campo ELSE 0 END) AS Positivos, (CASE WHEN
Campo <0 THEN Campo ELSE 0 END) AS Negativos FROM Fichero

Personalmente prefiero la primera opción, pero si necesitas la otra, solo
avisarte que no la he probado, así que puede que no sea exactamente así.



Muchas gracias por la atención prestada.



Gustavo Adolfo Márquez Álvarez.

Departamento de Informática.

gmarquez-***@public.gmane.org



inforZitro, S. L.

Carretera de Níjar, nº 404.

04007 Almería (España).

Teléfono: 950 226 658.

Extensión: 148.

Fax: 950 223 620.

-----Mensaje original-----
De: forum.help400-bounces-mdtS6lScdvwwdAU+I4PiffU/***@public.gmane.org
[mailto:forum.help400-bounces-mdtS6lScdvwwdAU+I4PiffU/***@public.gmane.org] En nombre de Juan Carlos O.
Enviado el: miércoles, 29 de mayo de 2013 12:01
Para: forum.help400
Asunto: "SQL, sumar positivos y sumar negativos"



Buenos dias compañeros.

En un fichero tengo un campo importe que puede ser positivo o negativo.
Tengo que calcular, por SQL, la suma de los importes positivos y la suma de
los importes negativos, por separado, dos totales. ¿Se puede hacer en una
sentencia de SQL o tengo que hacer dos, un para los > 0 y otra para < 0?

Mas o menos lo que necesito es algo así, mas o menos:

Select sum(positivos), sum(negativos), campo FROM fichero WHERE cualquier
condicion GROUP BY campo.

Mucha gracia a todos y saludos.

Loading...