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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Henry de Sousa
23/03/2006 - 16:19 | Informe spam
Muchas gracias. Efectivamente ese era el error. Ya lo solucioné y tome las
previsiones para
no obtener ese mensaje. Les dejo la línea exacta que estaba dando el error.

SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten END)
Ahora quedó así
SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten ELSE 1
END)

Por cierto una pregunta: este error no da cuando lo tienes en un Select?
Lo digo porque la misma subconsulta que tengo en la instrucción Update que les
dejé arriba no me arrojaba ningún error, sin embargo cuando la probé en el
Set del
Update entonces si lo obtuve.

Gracias nuevamente. Saludos...

"Alejandro Mesa" wrote:

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.
Respuesta Responder a este mensaje
#3 Alejandro Mesa
23/03/2006 - 17:10 | Informe spam
Henry,

Como te dije antes, no es un error. Es una advertencia o mensaje de
informacion. reciviras el mensaje siempre que uses funciones de grupo que no
tomen en cuenta valores "null".

AMB

"Henry de Sousa" wrote:

Muchas gracias. Efectivamente ese era el error. Ya lo solucioné y tome las
previsiones para
no obtener ese mensaje. Les dejo la línea exacta que estaba dando el error.

SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten END)
Ahora quedó así
SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten ELSE 1
END)

Por cierto una pregunta: este error no da cuando lo tienes en un Select?
Lo digo porque la misma subconsulta que tengo en la instrucción Update que les
dejé arriba no me arrojaba ningún error, sin embargo cuando la probé en el
Set del
Update entonces si lo obtuve.

Gracias nuevamente. Saludos...

"Alejandro Mesa" wrote:

> 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.
Respuesta Responder a este mensaje
#4 Henry de Sousa
23/03/2006 - 21:49 | Informe spam
Ok agradecido por tu ayuda.

"Alejandro Mesa" wrote:

Henry,

Como te dije antes, no es un error. Es una advertencia o mensaje de
informacion. reciviras el mensaje siempre que uses funciones de grupo que no
tomen en cuenta valores "null".

AMB

"Henry de Sousa" wrote:

> Muchas gracias. Efectivamente ese era el error. Ya lo solucioné y tome las
> previsiones para
> no obtener ese mensaje. Les dejo la línea exacta que estaba dando el error.
>
> SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten END)
> Ahora quedó así
> SUM(tpa1.ncosto_inv / CASE WHEN tpa1.nexisten <> 0 THEN tpa1.nexisten ELSE 1
> END)
>
> Por cierto una pregunta: este error no da cuando lo tienes en un Select?
> Lo digo porque la misma subconsulta que tengo en la instrucción Update que les
> dejé arriba no me arrojaba ningún error, sin embargo cuando la probé en el
> Set del
> Update entonces si lo obtuve.
>
> Gracias nuevamente. Saludos...
>
> "Alejandro Mesa" wrote:
>
> > 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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida