FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
Hola
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 |
#3
|
||||
|
||||
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.
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. |
#4
|
|||
|
|||
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 |
#5
|
|||
|
|||
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 |
#6
|
|||
|
|||
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 |
#7
|
||||
|
||||
Lo que tienes que tener claro es que valor le quieres dar a los Null, en el caso que todos los Null los asumas como N, lo que te ha puesto egostar es correcto, en el caso que tengas por ejemplo valores N , valores X y valores Nulos y estes agrupando por ese campo, Null será otra agrupación más como N y X. Si quieres puedes utilizar condicionales y preguntar si es nulo y en ese caso darle un valor u otro.....
|
#8
|
|||
|
|||
Para aclarte
La funsion de Coalesce es como lo dice Tcp_ip.., reemplaza los valores nulos por le que tu quieras, cuando le campo viene con un valor la consulta respeta dicho valor Lo que se coloca antes de la coma no es una condicion, es el campo que estas llamando ejemplo sin coalesce
campo1---------campo2----------campo3 valor1-----------A----------------NULL Valor2-----------b----------------DIA Valor3-----------c----------------NOCHE Valor4-----------d----------------NULL CON COALESCE
campo1---------campo2----------campo3 valor1-----------A----------------NO DEFINIDO Valor2-----------b----------------DIA Valor3-----------c----------------NOCHE valor1-----------d----------------NO DEFINIDO |
#9
|
|||
|
|||
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:
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#10
|
|||
|
|||
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.
esto deberia darme un solo registro 1------------N---------20; donde N pude ser cualquier letra Gracias de nuevo
__________________
Atentamente Luis |
#11
|
|||
|
|||
No entiendo...
Hola Luis
De lo que decis no entiendo lo siguiente Cita:
donde decis Cita:
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 |
#12
|
|||
|
|||
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 |
#13
|
|||
|
|||
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 |
#14
|
|||
|
|||
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 |
#15
|
|||
|
|||
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.
Espero te sirva. Gracias
__________________
Atentamente Luis |
#16
|
|||
|
|||
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 Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#17
|
|||
|
|||
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
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 |
#18
|
||||
|
||||
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 |
#19
|
|||
|
|||
Hola
Cita:
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í:
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. |
#20
|
||||
|
||||
Cita:
Cita:
Cita:
Cita:
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
|
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 |
|