Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Duda sobre COALESCE (https://www.clubdelphi.com/foros/showthread.php?t=30765)

AGAG4 18-04-2006 01:57:31

Duda sobre COALESCE
 
Estoy realizando varias sentencias SQL en firebird y me estoy percatando que cuando tomo las sumas de X campo(s) con COALESCE y SUM me da diferencias, por ejemplo:
Código SQL [-]
/*En esta consulta me da el TOTAL MENOR que la segunda*/
Select CoalEsce(Sum(Total),0) from tabla
 
ó
 
Select Sum(CoalEsce(Total,0)) from tabla
Buscando el objetivo de COALESCE, me percato que los valores nulos los convierte al valor donde se le especifica en el segundo parámetro COALESCE(Valor,0) en este caso es un CERO.

Cual es la forma más correcta de usar el Coalesce con el SUM ????

:confused:

RONPABLO 18-04-2006 04:08:01

Pues a mi tambien me paso algo similar y decidi hacerlo de la segunda manera (Es decir el coalesce dentro del sum), ya que en algunas ocaciones al encontrar algun valor null no me hacia la suma correctamente

AGAG4 20-04-2006 03:00:54

mmmm
 
Haciendo pruebas he llegado a la conclusión de que dejando así:
COALESCE((SUM(CAMPO),0)

Asi si me toma las SUMAS y si lo dejo ala inversa me salen los importes en CERO.

Aparentemente debería de ser SUM(COALESCE(CAMPO,0))

Que Raro!!!!

lpmlpm 20-04-2006 05:14:44

No lo veo raro, al contrario creo que tu descubrimiento es como debe de ser...

Haciendo recapitulación, la funcion de agregado Sum solo suma los elementos que son distintos de Null, siendo congruente porque no puede sumar un valor desconocido, tan es asi como que cuando aplicas un sum a una columna donde todos los registros valen null el resultado de la suma es null, porque es como decir, sumar un conjunto de Noseques pues me da un noseque... por ese comportamiento de evitar los valores nulos no tiene caso usar el coalesce dentro de la funcion de agregado, asi que si lo que quieres es que no te muestre el valor nul al final del calculo ahi si es valido usar el coalesce para que en caso de que la suma no este definida entonces si mejor muestre un valor cero.

AGAG4 28-04-2006 21:00:57

ok
 
Gracias... Que tenga buen día.


La franja horaria es GMT +2. Ahora son las 01:56:01.

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