Advertencia: valor NULL eliminado por el agregado u otra operaci ón

23/03/2006 - 14:35 por Henry de Sousa | Informe spam
Hola maestros.
Al ejecutar un UPDATE algo complejo obtengo el siguiente mensaje:
"Advertencia: valor NULL eliminado por el agregado u otra operación SET."
Primera vez que veo ese error y realmente no lo encuentro por ninguna parte
para saber qué está pasando. El Update se ejecuta bien, es decir, afecta a
las filas que debe afectar, pero al mismo tiempo me manda el mensaje que les
indiqué arriba.
A continuación les dejo la instrucción completa, no sé si esté muy clara.

UPDATE tproductos_almacen SET NCOSTO_ULC = (SELECT CASE
WHEN
MAX(tpa1.nexisten) <> 0 THEN
CASE
WHEN
MAX(tpa1.nexisten) < MAX(tdt1.ncantidad) THEN

SUM(tpa1.ncosto_inv / tdt1.ncantidad)
ELSE
SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten END)
END
ELSE 0
END
FROM tdetalles_traslado tdt1
INNER JOIN tproductos_almacen tpa1
ON tdt1.cid_produc =
tpa1.cid_produc
WHERE tdt1.cid_trasla =
tdt.cid_trasla
AND tdt1.cid_produc =
tdt.cid_produc and tpa1.cid_almace = '08'
GROUP BY tdt1.cid_produc)

FROM tdetalles_traslado tdt INNER JOIN ttraslados tt
ON tdt.cid_trasla = tt.cid_trasla
INNER JOIN tproductos_almacen tpa
ON tdt.cid_produc = tpa.cid_produc AND
tpa.cid_almace = tt.cid_almdes
WHERE (tdt.cid_trasla = '20000122') AND tdt.nlinea IN

(SELECT MAX(nlinea)
FROM tdetalles_traslado
GROUP BY cid_produc,cid_trasla
HAVING cid_trasla = '20000122')


Saludos y gracias por su atención.
 

Leer las respuestas

#1 Alejandro Mesa
23/03/2006 - 15:05 | Informe spam
Henry,

No es un error, es una advertencia o mensaje de informacion enviado por sql
server cuando usamos funciones de agregacion y estas procesan columnas que
permiten valores "null".

Ejemplo:

select sum(c1)
from (select cast(null as int) as c1 union all select cast(1 as int) as c1)
as t1
go

Chequea los valores de las columnas que usas en las funciones MAX y SUM.
Este mensaje se puede evitar si usas las funciones "isnull" y/o "coalesce" en
conjunto con las funciones de grupo.

Ejemplo:

select sum(isnull(c1, 0))
from (select cast(null as int) as c1 union all select cast(1 as int) as c1)
as t1
go


AMB

"Henry de Sousa" wrote:

Hola maestros.
Al ejecutar un UPDATE algo complejo obtengo el siguiente mensaje:
"Advertencia: valor NULL eliminado por el agregado u otra operación SET."
Primera vez que veo ese error y realmente no lo encuentro por ninguna parte
para saber qué está pasando. El Update se ejecuta bien, es decir, afecta a
las filas que debe afectar, pero al mismo tiempo me manda el mensaje que les
indiqué arriba.
A continuación les dejo la instrucción completa, no sé si esté muy clara.

UPDATE tproductos_almacen SET NCOSTO_ULC = (SELECT CASE
WHEN
MAX(tpa1.nexisten) <> 0 THEN
CASE
WHEN
MAX(tpa1.nexisten) < MAX(tdt1.ncantidad) THEN

SUM(tpa1.ncosto_inv / tdt1.ncantidad)
ELSE
SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten END)
END
ELSE 0
END
FROM tdetalles_traslado tdt1
INNER JOIN tproductos_almacen tpa1
ON tdt1.cid_produc =
tpa1.cid_produc
WHERE tdt1.cid_trasla =
tdt.cid_trasla
AND tdt1.cid_produc =
tdt.cid_produc and tpa1.cid_almace = '08'
GROUP BY tdt1.cid_produc)

FROM tdetalles_traslado tdt INNER JOIN ttraslados tt
ON tdt.cid_trasla = tt.cid_trasla
INNER JOIN tproductos_almacen tpa
ON tdt.cid_produc = tpa.cid_produc AND
tpa.cid_almace = tt.cid_almdes
WHERE (tdt.cid_trasla = '20000122') AND tdt.nlinea IN

(SELECT MAX(nlinea)
FROM tdetalles_traslado
GROUP BY cid_produc,cid_trasla
HAVING cid_trasla = '20000122')


Saludos y gracias por su atención.

Preguntas similares