Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
como sumar con nulos?

Hola comunidad:

Recurro a uds por que puedo dar con la solucion:
tengo p.e. 3 registros
idcliente - mes - condicion importe
1 1 N 100
1 1 null -50
1 1 null -20


y tengo que obtener

1 1 N 30
Utilizo firebird 2.0 y es en un procedimiento almacenado

Actualmente uso:
Código SQL [-] select idcliente,mes,condicion,sum(importe) from cuentas group by idcliente,mes,condicion


obtengo
1 1 N 100
1 1 null -70

Muchas gracias
__________________
Atentamente
Luis
Responder Con Cita
  #2  
Antiguo 02-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Hola

Código SQL [-]
select idcliente,mes,coalesce(condicion, 'N'),sum(importe) from cuentas 
group by idcliente,mes,condicion

Aqui solo mi pregunta, solo tienes N o son mas condiciones, si son mas condiciones no creo que haya algo que nos sirva.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 02-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola lledesma, si colocas en tu group by condición, así como estan tus datos se van a formar dos grupos uno de los que tiene N y el otro de los nulos, que sería lo normal, si quieres un solo grupo debes quitar condición.

Código SQL [-]
select idcliente,mes,sum(importe) from cuentas group by idcliente,mes

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 02-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Gracias por las respuestas:

Gracias Caro y Egostar: si, en realidad tengo mas condiciones. Los nulos me generan un problema, no puedo obtener el saldo por clientes y necesito saber la condicion por cada mes.
__________________
Atentamente
Luis
Responder Con Cita
  #5  
Antiguo 02-09-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Código SQL [-]
select idcliente,mes,coalesce(CAMPO,'N'),sum(importe) from cuentas group by idcliente,mes,condicion
Yo creo que lo que te sugiere egostar esta bien si se considera que lo que se adiciona en le coalesce no es una codicion sino un campoLo que hace el coalesce es darle un valor el que se quiera, en este caso 'N' para los registros que vienen nulos, los demas valores los asigna como estan en la base de datos
Responder Con Cita
  #6  
Antiguo 03-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Gracias ecospina, el problema es que al utilizar coalesce(CAMPO,'N') me sirve en la mediada que CAMPO tenga el valor 'N', si CAMPO viene con otro valor?.
__________________
Atentamente
Luis
Responder Con Cita
  #7  
Antiguo 08-09-2008
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
Cita:
Empezado por lledesma Ver Mensaje
Hola comunidad:

Recurro a uds por que puedo dar con la solucion:
tengo p.e. 3 registros
idcliente - mes - condicion importe
1 1 N 100
1 1 null -50
1 1 null -20


y tengo que obtener

1 1 N 30
Utilizo firebird 2.0 y es en un procedimiento almacenado

Actualmente uso:
Código SQL [-] select idcliente,mes,condicion,sum(importe) from cuentas group by idcliente,mes,condicion


obtengo
1 1 N 100
1 1 null -70

Muchas gracias

si la condicion no importa, solo quitala del select y del group
__________________
Todos llevamos nuestros demonios a cuestas..
Responder Con Cita
  #8  
Antiguo 08-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por gmontes Ver Mensaje
si la condicion no importa, solo quitala del select y del group
Ahí esta el problema la condición si importa, como he dicho al principio, con esta consulta.

Código SQL [-]
select idcliente, mes, sum(importe) from cuentas group by idcliente,mes

ya obtenemos lo que el amigo quiere

Código:
5  1  M  50
5  2  B  40
5  3  C  35
pero no sabemos a que condición pertenece cada uno de esos registros, ahora si aumentamos en el group by la condición, obtrendremos este resultado ya que nos va a agrupar por ese campo mas.

Código:
5  1  null  -50
5  1  M     100
5  2  null  -30
5  2  B      70
5  3  null   -5
5  3  C      35
y es lo que no se quiere, entonces la pregunta sería como añadir mas campos en una consulta con group by pero sin colocarlo en el group by para que no afecte en la agrupación. De hecho si utilizamos group by y queremos mostrar un campo en el select tenemos que añadirlo en el group by.

La verdad yo también quisiera saber como hacer eso.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 08-09-2008
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
el problema es que

tiene lo siguiente:

1 1 N 100
1 1 null -50
1 1 null -20

y quiere obtener 1 1 N 30

select idcliente,mes,condicion,sum(importe) from cuentas group by idcliente,mes,condicion

obtiene
1 1 N 100
1 1 null -70

lo cual es valido porque agrupa por por condicion

o sea que si la condicion fuera por B

1 1 B 200
1 1 N 100
1 1 null -50
1 1 null -20

el quisiera obtener
1 1 B 130

es decir, que las condiciones Null se sumen a cualquier condicion que se seleccione.

pues que en el procedure tenga dos select

select idcliente,mes,condicion,sum(importe) from cuentas where condicion = "N" group by idcliente,mes,condicion



y la segunda

select idcliente,mes,condicion,sum(importe) from cuentas where condicion is NULL group by idcliente,mes,condicion

y que los campos de salida del importe sea la suma de ambas condiciones
__________________
Todos llevamos nuestros demonios a cuestas..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como sumar una fecha esimon OOP 16 06-09-2007 19:19:07
Como Ingresar Valores En Blanco O Nulos En Access JanoRod Conexión con bases de datos 1 16-11-2005 15:40:48
Como Sumar en Rave Wascar Impresión 1 21-04-2005 18:45:12
S.O.S como selecciono campo nulos Ryu SQL 3 11-04-2005 16:40:50
cómo sumar mariajoiz SQL 3 27-06-2003 14:00:39


La franja horaria es GMT +2. Ahora son las 10:15:27.


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
Copyright 1996-2007 Club Delphi