FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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.... |
#2
|
||||
|
||||
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) |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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). |
#5
|
|||
|
|||
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. |
|
|
|