Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Efectivamente,

La funcion coalesce te "cambia" los valores nulos por lo que tu gustes y mandes, en este caso yo los asigne a 'N' dada tu primer intervencion

Cita:
Empezado por lledesma
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
Incluso te pregunté si solo eran condiciones de tipo 'N', para lo cual la solución funcionará a la perfección, sin embargo, al tener varias condiciones tu debes decidir a cual condición quieres asignarla o como dicen los compañeros, crear una condición adicional.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #2  
Antiguo 05-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Muchas gracias gente por los aportes:

Bien, ahora entiendo como funciona coalesce, pero creo que no sirve para mis propositos. Deberia saber con que valor viene el campo "condicion" para poder asignar el valor que corresponda de modo de poder sumarlo todo en un solo registro, y como las condiciones puden ser todas la que el usuario defina, se complica.

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

esto deberia darme un solo registro

1------------N---------20; donde N pude ser cualquier letra


Gracias de nuevo
__________________
Atentamente
Luis
Responder Con Cita
  #3  
Antiguo 05-09-2008
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
No entiendo...

Hola Luis
De lo que decis no entiendo lo siguiente

Cita:
Bien, ahora entiendo como funciona coalesce, pero creo que no sirve para mis propositos. Deberia saber con que valor viene el campo "condicion" para poder asignar el valor que corresponda de modo de poder sumarlo todo en un solo registro, y como las condiciones puden ser todas la que el usuario defina, se complica.

donde decis
Cita:
Deberia saber con que valor viene el campo "condicion" para poder asignar el valor que corresponda de modo de poder sumarlo todo en un solo registro
Sabés con que valor viene el campo condicion, una letra o null...
no podes agrupar letras con null, que sentido tiene? si estan en null es porque no son N...

Tenes que definir un criterio para agrupar...
si es por cliente-mes-condicion los null te van a aparecer separados, no hay otra forma de que aparezcan...

Lo que vos estas queriendo hacer es agrupar solo por cliente-mes, y con sacar condicion de la consulta alcanza

en tu ejemplo pusiste:

1 1 N 100
1 1 null -50
1 1 null -20
y tengo que obtener
1 1 N 30

Por que queres que los null te aparezcan agrupados con las N ????
Si son null no son N...

Saca la condicion de la consulta para que quede
1 1 100
1 1 -50
1 1 -20
y obtendras
1 1 30

No se si te entendi...
espero te sirva esto

Saludos
Pablo
Responder Con Cita
  #4  
Antiguo 05-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Pues si, conincido con hach

En realidad no hay lógica en tu pregunta, como pretendes conocer algo que no trae una condición.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 05-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Es verdad, no es muy logico mi planteo y quizas no fue clara mi pregunta.
el registro que tiene la condicion e importe positivo, hace referencia a una factura y los registros con null y negativos a los distintos pagos que hizo el cliente. es real que hay una falla en el diseño del sistema ya que deberia grabar la condicion tanto en la factura como en los pagos, pero como se trata de una archivo historico, ya arrastra este error. Es por eso que necesito saber por cada mes el saldo y la condicion que tenia el cliente en ese mes asumiento que los nullos tienen que tener el valor de la condicion correspondiente a la factura. Se entiende?. Ademas necesito saber l condicion por que dependiendo del valor que tenga ('N','M','C',...etc) dispara una serie de calculos adicionales

Gracia nuevamente por la buena disposicion.
__________________
Atentamente
Luis
Responder Con Cita
  #6  
Antiguo 05-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Ok, eso ya esta mas o menos claro

Vamos por partes

Que condición deberian tener los valores negativos?
Como podemos saber los otros tipos de condiciones?

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 07-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Ok.

Los valores negativos deberian tener la misma condicion de la factura (valores positivos) para el mes en cuention. p.e.

mes------------condicion------importe
1-----------------N------------- 100
1-----------------null----------- -30
1-----------------NULL---------- -10
1-----------------NULL---------- -10

esto deberia dar

1-------------------N------------ 50

Las condiciones estan en una tabla de condiciones:

condicion------- descripcion
N--------------- "xxxxxxxxxxxxxx"
M--------------- "yyyyyyyyyyyy"
B---------------- "zzzzzzzzzzzzzz"

Intente con este provedimiento almacenado, pero en unat tabla con 250000 registros demora una eternidad.

Código SQL [-]
for select idcliente,ano,mes
sum(importe) as importe  from cuentas
group by idcliente,ano,mes
INTO :idcliente,:ano,:mes,:importe do
 begin
     select distinct condicion from cuentas where idcliente=:idcliente and ANO =:ANO AND MES=:MES into :condicion;
end

Espero te sirva. Gracias
__________________
Atentamente
Luis
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 22:25:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi