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 12-02-2004
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Una de Interbase

Tengo la siguiente Consulta:

SELECT A.COD_CUENTA,
IMPORTE +
(SELECT SUM(IMPORTE)
FROM MOVIMIENTO
WHERE CERRADO = 'N' AND
CARGO = 'I' AND
FECHA = Current_Date AND
COD_CUENTA = A.COD_CUENTA) -
(SELECT SUM(IMPORTE)
FROM MOVIMIENTO
WHERE CERRADO = 'N' AND
CARGO = 'P' AND
FECHA = Current_Date AND
COD_CUENTA = A.COD_CUENTA) SALDO_CIERRE
FROM MOVIMIENTO A,
ULTIMO_SALDO B
WHERE BORRADO <> 'S' AND
CARGO = 'S' AND
A.COD_MOVIMIENTO = B.COD_MOVIMIENTO AND
A.COD_CUENTA = B.COD_CUENTA


Y cuando alguna de la s subconsultas me devuelve null, interbase me lo deja todo a null

Ej:

Cuenta Saldo_Cierre

2 null
3 3456,45
5 null

y me gustaria k donde fuese null me dijese 0, una instruccion parecida a oracle k me deja utilizar Decode k es paracido al If....

K me dejaria si fuese null k cambiara el Valor a = (Por Ejemplo)

SELECT DECODE(IMPORTE, NULL , 0)

// Sería algo como si el importe es Null, pon 0...

Muchas Gracias por Vuestra Colaboración....
Responder Con Cita
  #2  
Antiguo 12-02-2004
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 21
haron Va por buen camino
pero podrias usar campos calculados para determinar el importe, en lugar de hacerlo a traves del SQL.

de todas formas creo que tu problema es el campo 'importe', ya que 'sum' creo que siempre devuelve un numero. tendrias que distinguir entre los registros quue tienen importe nulo y los que no.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #3  
Antiguo 12-02-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Prueba algo así

Código:
SELECT
  A.COD_CUENTA,
  IMPORTE +
      (SELECT SUM(IMPORTE)
       FROM MOVIMIENTO
       WHERE
         CERRADO = 'N' AND
         CARGO = 'I' AND
         FECHA = Current_Date AND
         COD_CUENTA = A.COD_CUENTA AND
         IMPORTE IS NOT NULL) -
      (SELECT SUM(IMPORTE)
       FROM MOVIMIENTO
       WHERE
         CERRADO = 'N' AND
         CARGO = 'P' AND
         FECHA = Current_Date AND
         COD_CUENTA = A.COD_CUENTA AND
         IMPORTE IS NOT NULL) SALDO_CIERRE
FROM MOVIMIENTO A, ULTIMO_SALDO B
WHERE
  BORRADO <> 'S' AND
  CARGO = 'S' AND
  A.COD_MOVIMIENTO = B.COD_MOVIMIENTO AND
  A.COD_CUENTA = B.COD_CUENTA
Responder Con Cita
  #4  
Antiguo 12-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Ademas si actualizas a Firebird 1.5, puedes utilizar COALESCE(IMPORTE, 0)

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 12-02-2004
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Post

Me sigue dando el mismo resultado con Importe is not null

Ya que si no hay ningún registro k cumpla la condición en la subconsulta me sigue devolviendo null, ya que en Interbase al igual k en muchos otros

234,56 + null + 3445,34 = NULL



Mi intención es k ese Null lo tome como 0 y haga lo siguiente:

234,56 + 0 + 3445,34 = .....


Muchas Gracias por Vuestra ayuda.....

Última edición por Rabata fecha: 12-02-2004 a las 17:28:48.
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


La franja horaria es GMT +2. Ahora son las 10:57:59.


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