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 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
  #2  
Antiguo 07-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Hola

Creo que el que no ha entendido el asunto eres tu, nos sigues poniendo el ejemplo de la condicion N y nulos, y despues hablas de otras condiciones, pero no nos has puesto un ejemplo con todas las condiciones.

Código:
mes------------condicion------importe
1-----------------N------------- 100
1-----------------null----------- -30
1-----------------NULL---------- -10
1-----------------NULL---------- -10
1-----------------M------------- 100
1-----------------null----------- -30
1-----------------NULL---------- -10
1-----------------NULL---------- -10
1-----------------B------------- 100
1-----------------null----------- -30
1-----------------NULL---------- -10
1-----------------NULL---------- -10
Otra cosa es si estos datos vienen ordenados o no, creo que estas en un lio con la estructura que tienes, no veo como puedas con esa información tan limitada conocer a que factura pertenece cada pago si no trae una condición, un numero de factura, un numero de cliente, una fecha, en fin algo que nos permita realizar un proceso.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 07-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Egostar, antes que nada te agradezco por el tiempo, no quiero generar una discusion sin final, si el problema no llega a nada o no se entiende, punto final. El tema es: la facturas, importes positivos, pueden "venir" con cualquier condicion (siempre que esten definidas en las tablas de condicion) y es la que domina sobre los importes negativos para ese mes. pe.

idcliente -------mes------------ condicion-----------importe
5---------------1-----------------M----------------- 100
5---------------1-----------------null--------------- -30
5---------------1-----------------null--------------- -20
5---------------2-----------------B----------------- 70
5---------------2-----------------null--------------- -20
5---------------2-----------------null--------------- -10
5---------------3-----------------C---------------- 40
5---------------3-----------------null-------------- -5

deberia obtener

5---------------1------------------M----------------- 50
5---------------2------------------B----------------- 40
5---------------3------------------C----------------- 35

si pudiera hacer que

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

me sumara los nulos como M o B o C o ... etc segun el mes y la condicion del valor positivo seria fantástico.

Con respecto a los otros datos, la estructura es mas compleja, tiene numero de factura,tipo de comprobantes, fecha, etc. Pero consideré que era demasiado engorroso ponerla en el ejemplo, me importaba solo la idea como para poder aplicarla sobre el modelo de datos



Gracias.
__________________
Atentamente
Luis
Responder Con Cita
  #4  
Antiguo 07-09-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Lo que no entiendo es por que dejar nulos en la tabla?.
La verdad me parece que siempre trae problemas, yo prefiero poner algo, lo que sea pero no dejar el espacio en blanco.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 07-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola

Cita:
Empezado por Caral Ver Mensaje
Lo que no entiendo es por que dejar nulos en la tabla?.
La verdad me parece que siempre trae problemas, yo prefiero poner algo, lo que sea pero no dejar el espacio en blanco.
A ver, NULL es un valor como cualquier otro. ¿Qué más da que ponga NULL a que ponga "-" o a que ponga ""? Con esos valores tendría el mismo problema, B o C o M sería diferente de ese valor que tu pusieras por defecto.

La cuestión está en poder sumar todos los valores de un determinado mes. Si sólo puede haber una condición por mes, la cosa es sencilla, el problema vendría si se puede dar más de una condición por mes ya que no sabríamos donde asignar esos valores a NULL (o con el valor por defecto que quieras).

Si suponemos que sólo se puede dar una condición por mes, el SQL podría quedar algo así:

Código SQL [-]
select distinct c1.idcliente, c1.mes, c1.condicion
    (select sum(importe) from cuentas c2
     where c2.idcliente = c1.idcliente and c2.mes = c1.mes) importe
from cuentas c1
where not (c1.condición is NULL)

El SQL no lo he probado, pero sería así más o menos y, repito, SÓLO serviría para el caso de que sólo se pudiera tener una condición por mes.
Responder Con Cita
  #6  
Antiguo 08-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por ninguno Ver Mensaje

A ver, NULL es un valor como cualquier otro. ¿Qué más da que ponga NULL a que ponga "-" o a que ponga ""? Con esos valores tendría el mismo problema, B o C o M sería diferente de ese valor que tu pusieras por defecto.
Acaso hemos dicho lo contrario ????


Cita:
Empezado por ninguno Ver Mensaje
La cuestión está en poder sumar todos los valores de un determinado mes. Si sólo puede haber una condición por mes, la cosa es sencilla, el problema vendría si se puede dar más de una condición por mes ya que no sabríamos donde asignar esos valores a NULL (o con el valor por defecto que quieras).
, Insisto, hemos dicho lo contrario????

Cita:
Empezado por ninguno Ver Mensaje
Si suponemos que sólo se puede dar una condición por mes, el SQL podría quedar algo así:
, Pues por desgracia hemos estado suponiendo todo este tiempo muchas cosas, el problema es que no se nos pone la información necesaria para llegar a una solución.......

Cita:
Empezado por lledesma
Con respecto a los otros datos, la estructura es mas compleja, tiene numero de factura,tipo de comprobantes, fecha, etc. Pero consideré que era demasiado engorroso ponerla en el ejemplo, me importaba solo la idea como para poder aplicarla sobre el modelo de datos
Caray, pues te has y nos has liado demasiado con algo que puede verse y solucionarse desde otra perspectiva.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 08-09-2008
ninguno ninguno is offline
Miembro
 
Registrado: sep 2008
Posts: 45
Poder: 0
ninguno Va por buen camino
Hola

Cita:
Empezado por egostar Ver Mensaje
Acaso hemos dicho lo contrario ????
Sí, fíjate mi cita de Caral

Cita:
Empezado por egostar Ver Mensaje
, Pues por desgracia hemos estado suponiendo todo este tiempo muchas cosas, el problema es que no se nos pone la información necesaria para llegar a una solución.......
Como he dicho, si en un mes puede haber más de 1 tipo de condición y no todos los registros están informados, será difícil, por no decir imposible, hacer esa suma dado que NO podrás saber a qué condición agregarle esos registros sin condición.
Responder Con Cita
  #8  
Antiguo 08-09-2008
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Perdon si generé lios, no era mi intencion. Igual gracias por los aportes. Y me corrijo, El resto de informacion que falta en los datos no tiene relevancia, por cuanto no sirve a los propositos que busco, el ejemplo que pongo a consideración es tal cual se utiliza en el procedimiento. De nuevo, gracias
__________________
Atentamente
Luis
Responder Con Cita
  #9  
Antiguo 08-09-2008
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
A ver si entendi...

Hola otra vez!!!
A ver si entendi:
1) la factura tiene una condicion y un importe
2) los pagos tienen importes pero no condicion

es asi?

La unica forma de hacer lo que querés es saber la condicion de los pagos, y como no la tienes, la unica forma sería si podés vincular un pago a una determinada factura
Es eso posible? Un pago corresponde a una factura determinada? Tenés forma de vincularlos mediante los datos que tenés?
Si es así, es sencillo, basta con traer la condicion de la factura a la cual pertenece el pago en el select
Si no es asi, no le des mas vueltas...

en algun lado dices:

Cita:
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
La condicion es propia del cliente?
Podrias vincular el cliente con el pago, y obtener la condicion
pero si cambia de mes a mes, solo obtendrias la ultima condicion, salvo que lleves un historico de condiciones...



Saludos

Pablo
Responder Con Cita
  #10  
Antiguo 08-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Te endiendo amiguito GMontes, pero si nos fijamos en los datos que nos puso si sabemos a donde pertenecen los null, los registros en rojo le pertenecen al mes 1, los verdes al mes 2 y el azul al mes 3, por eso decía que con la agrupación de solo cliente y condición ya obtenemos lo que queremos.

Cita:
Empezado por lledesma Ver Mensaje
idcliente -------mes------------ condicion-----------importe
5---------------1-----------------M----------------- 100
5---------------1-----------------null--------------- -30
5---------------1-----------------null--------------- -20
5---------------2-----------------B----------------- 70
5---------------2-----------------null--------------- -20
5---------------2-----------------null--------------- -10
5---------------3-----------------C---------------- 40
5---------------3-----------------null-------------- -5
Acabo de hacer una prueba de esta consulta y si funciona, se obtiene lo que quiere el amigo, por lo menos a mi me funciona, pero nose que tan bien pueda estar. Lo he probado en Firebird por si acaso.

Código SQL [-]
select c1.idcliente, c1.mes, c1.condicion, 
        (select sum(importe) 
         from clientes where idcliente=c1.idcliente and mes=c1.mes group by id_cliente, mes)
from clientes c1
where condicion  is not Null

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.

Última edición por Caro fecha: 08-09-2008 a las 17:17:32.
Responder Con Cita
  #11  
Antiguo 08-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Hola amiguita [Caro]

Y que pasaría si en un mismo mes tiene las opciones N,M,B,C,X,Y,Z y tiene el mismo cliente varias veces.

Ahi es donde yo tengo la duda de que se pueda hacer así como lo plantea lledesma

Yo creo que hace falta mas información para poder "adivinar" este asunto.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #12  
Antiguo 08-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 24
Caro Va por buen camino
Cita:
Empezado por egostar Ver Mensaje
Y que pasaría si en un mismo mes tiene las opciones N,M,B,C,X,Y,Z y tiene el mismo cliente varias veces.
Ahi es donde yo tengo la duda de que se pueda hacer así como lo plantea lledesma
Yo creo que hace falta mas información para poder "adivinar" este asunto.
En ese caso egopolice , ya no funciona lo ultimo que puse, yo me he basado en el ultimo ejemplo y explicación que puso Iledesma.

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
  #13  
Antiguo 08-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Cita:
Empezado por Caro Ver Mensaje
En ese caso egopolice , ya no funciona lo ultimo que puse, yo me he basado en el ultimo ejemplo y explicación que puso Iledesma.

Saluditos
Pues si, me parece que el buen amigo lledesma nos está dando las cosas a cuenta gotas

Salud ITOS

PD, Apurale que ya veo que varios tienen ganas de festejar a un nuevo milenario
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #14  
Antiguo 08-09-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Cita:
Empezado por egostar Ver Mensaje
Hola amiguita [Caro]

Y que pasaría si en un mismo mes tiene las opciones N,M,B,C,X,Y,Z y tiene el mismo cliente varias veces.

Ahi es donde yo tengo la duda de que se pueda hacer así como lo plantea lledesma

Yo creo que hace falta mas información para poder "adivinar" este asunto.

Salud OS
Pues según entiendo (y a lo mejor entiendo mal ), para cada mes solo puede existir una condición con valor (importes positivos) y varias nulas (importes negativos), de tal forma que, si entendí bien, la consulta de Caro debería servir bien...


Saludos...
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 05:20:21.


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