Se puede pasar por alto este error?

17/02/2005 - 10:40 por JOSE ANTONIO | Informe spam
Estoy realizando un select que me da el siguiente error:

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

El select es el siguiente:

SELECT * FROM TABLA1 JOIN (SELECT * FROM TABLA2 WHERE CONDICION) ON etc

He observado que este error lo da cuando el select que hace join con tabla1
no tiene resultados.

Puedo pasar por alto este error y despreocuparme o hay alguna manera montar
el select para que no lo de.


Saludos y gracias.

Preguntas similare

Leer las respuestas

#6 JOSE ANTONIO
18/02/2005 - 09:31 | Informe spam
En tu segunda respuesta me decías de utilizar el case dentro de sum y lo que
hice fue utilizar coalesce para que no diese null, pero tambien da null.

Cambie SUM(cantidad), por COALESCE(SUM(cantidad),0) y tambien me da el mismo
error.

1.-Con SUM(COALESCE(cantidad,0)) no me da el error, pero no se si es una
expresion correcta.

Segun tu segunda respuesta seria correcta:
2.-SUM(case when cantidad is null then 0 else cantidad end)

Cual seria la opcion mas correcta de las 2?


Gracias por tu ayuda.




"Salvador Ramos" escribió en el
mensaje news:OEL$
He intentado simular algo paretido a tu instrucción, pero no da ningún
error.
USE Northwind
GO
SELECT * FROM Customers C JOIN
(SELECT CustomerId, Freight, SUM(Freight) TotFr
FROM Orders
WHERE 0=1 -- para que no devuelva ninguna fila
GROUP BY CustomerId, Freight
) O
ON O.CustomerId = C.CustomerId

Puedes facilitarnos un script con las instrucciones DDL y con las inserts
de filas que produzcan ese error ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose Antonio" escribió en el mensaje
news:
No, el problema no es que me devuelva columnas con valor null sino que el
select completo con el que se realiza el join no tiene resultados y
supongo que devuelve null, pero es una de las posibilidades, ese select
puede ser que no tenga resultados, porque no se haya devuelto nada de lo
que se presto.

"Salvador Ramos" escribió en el
mensaje news:
Problemas en si no te va a ocasionar, pero te recomiendo que mejores el
SELECT utilizando la instrucción CASE para evitar este error. Te paso un
ejemplo de uso dentro de SUM, también lo puedes incluir en ROUND:
SELECT cliente, SUM(CASE WHEN Tipo = 'A' THEN canti ELSE 0 END) AS
TotalContado ...

En fin es solo una idea para mejorar tu SELECT, la verdad que voy muy
mal de tiempo ahora para montarla y enviartela depurada, lo siento.


Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:
Esta es la consulta:

select p.codigo,p.titulo,p.fecha,round(r.alquilados-r.devueltos,2) as
pendientes from prestamos p join (select p1.codigo,p1.cantidad as
alquilado,sum(d1.cantidad) as devueltos from prestados p1 left join
devoluciones d1 on p1.codigoÑ.codigo group by p1.codigo,p1.cantidad)
r on r.codigo=p.codigo where p.alquilado>p.devuelto


"Salvador Ramos" escribió en el
mensaje news:%
Nos podrías poner la consulta completa ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
Estoy realizando un select que me da el siguiente error:

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

El select es el siguiente:

SELECT * FROM TABLA1 JOIN (SELECT * FROM TABLA2 WHERE CONDICION) ON
etc

He observado que este error lo da cuando el select que hace join con
tabla1 no tiene resultados.

Puedo pasar por alto este error y despreocuparme o hay alguna manera
montar el select para que no lo de.


Saludos y gracias.





















Respuesta Responder a este mensaje
#7 Salvador Ramos
18/02/2005 - 11:09 | Informe spam
Ambas expresiones son igual de correctas sólo depende de lo que necesites
obtener.

En cuanto a tu problema, como te he indicado, no consigo simularlo, por eso
pedí que enviases los ddl y algunas inserts con datos que permitiesen
reproducir el error.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
En tu segunda respuesta me decías de utilizar el case dentro de sum y lo
que hice fue utilizar coalesce para que no diese null, pero tambien da
null.

Cambie SUM(cantidad), por COALESCE(SUM(cantidad),0) y tambien me da el
mismo error.

1.-Con SUM(COALESCE(cantidad,0)) no me da el error, pero no se si es una
expresion correcta.

Segun tu segunda respuesta seria correcta:
2.-SUM(case when cantidad is null then 0 else cantidad end)

Cual seria la opcion mas correcta de las 2?


Gracias por tu ayuda.




"Salvador Ramos" escribió en el
mensaje news:OEL$
He intentado simular algo paretido a tu instrucción, pero no da ningún
error.
USE Northwind
GO
SELECT * FROM Customers C JOIN
(SELECT CustomerId, Freight, SUM(Freight) TotFr
FROM Orders
WHERE 0=1 -- para que no devuelva ninguna fila
GROUP BY CustomerId, Freight
) O
ON O.CustomerId = C.CustomerId

Puedes facilitarnos un script con las instrucciones DDL y con las inserts
de filas que produzcan ese error ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose Antonio" escribió en el mensaje
news:
No, el problema no es que me devuelva columnas con valor null sino que
el select completo con el que se realiza el join no tiene resultados y
supongo que devuelve null, pero es una de las posibilidades, ese select
puede ser que no tenga resultados, porque no se haya devuelto nada de lo
que se presto.

"Salvador Ramos" escribió en el
mensaje news:
Problemas en si no te va a ocasionar, pero te recomiendo que mejores el
SELECT utilizando la instrucción CASE para evitar este error. Te paso
un ejemplo de uso dentro de SUM, también lo puedes incluir en ROUND:
SELECT cliente, SUM(CASE WHEN Tipo = 'A' THEN canti ELSE 0 END) AS
TotalContado ...

En fin es solo una idea para mejorar tu SELECT, la verdad que voy muy
mal de tiempo ahora para montarla y enviartela depurada, lo siento.


Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:
Esta es la consulta:

select p.codigo,p.titulo,p.fecha,round(r.alquilados-r.devueltos,2) as
pendientes from prestamos p join (select p1.codigo,p1.cantidad as
alquilado,sum(d1.cantidad) as devueltos from prestados p1 left join
devoluciones d1 on p1.codigoÑ.codigo group by
p1.codigo,p1.cantidad) r on r.codigo=p.codigo where
p.alquilado>p.devuelto


"Salvador Ramos" escribió en el
mensaje news:%
Nos podrías poner la consulta completa ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
Estoy realizando un select que me da el siguiente error:

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

El select es el siguiente:

SELECT * FROM TABLA1 JOIN (SELECT * FROM TABLA2 WHERE CONDICION) ON
etc

He observado que este error lo da cuando el select que hace join con
tabla1 no tiene resultados.

Puedo pasar por alto este error y despreocuparme o hay alguna manera
montar el select para que no lo de.


Saludos y gracias.

























Respuesta Responder a este mensaje
#8 Jose Antonio
18/02/2005 - 21:25 | Informe spam
Que es eso de los ddl, cómo los tengo que hacer?.

"Salvador Ramos" escribió en el
mensaje news:
Ambas expresiones son igual de correctas sólo depende de lo que necesites
obtener.

En cuanto a tu problema, como te he indicado, no consigo simularlo, por
eso pedí que enviases los ddl y algunas inserts con datos que permitiesen
reproducir el error.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
En tu segunda respuesta me decías de utilizar el case dentro de sum y lo
que hice fue utilizar coalesce para que no diese null, pero tambien da
null.

Cambie SUM(cantidad), por COALESCE(SUM(cantidad),0) y tambien me da el
mismo error.

1.-Con SUM(COALESCE(cantidad,0)) no me da el error, pero no se si es una
expresion correcta.

Segun tu segunda respuesta seria correcta:
2.-SUM(case when cantidad is null then 0 else cantidad end)

Cual seria la opcion mas correcta de las 2?


Gracias por tu ayuda.




"Salvador Ramos" escribió en el
mensaje news:OEL$
He intentado simular algo paretido a tu instrucción, pero no da ningún
error.
USE Northwind
GO
SELECT * FROM Customers C JOIN
(SELECT CustomerId, Freight, SUM(Freight) TotFr
FROM Orders
WHERE 0=1 -- para que no devuelva ninguna fila
GROUP BY CustomerId, Freight
) O
ON O.CustomerId = C.CustomerId

Puedes facilitarnos un script con las instrucciones DDL y con las
inserts de filas que produzcan ese error ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose Antonio" escribió en el mensaje
news:
No, el problema no es que me devuelva columnas con valor null sino que
el select completo con el que se realiza el join no tiene resultados y
supongo que devuelve null, pero es una de las posibilidades, ese select
puede ser que no tenga resultados, porque no se haya devuelto nada de
lo que se presto.

"Salvador Ramos" escribió en el
mensaje news:
Problemas en si no te va a ocasionar, pero te recomiendo que mejores
el SELECT utilizando la instrucción CASE para evitar este error. Te
paso un ejemplo de uso dentro de SUM, también lo puedes incluir en
ROUND:
SELECT cliente, SUM(CASE WHEN Tipo = 'A' THEN canti ELSE 0 END) AS
TotalContado ...

En fin es solo una idea para mejorar tu SELECT, la verdad que voy muy
mal de tiempo ahora para montarla y enviartela depurada, lo siento.


Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:
Esta es la consulta:

select p.codigo,p.titulo,p.fecha,round(r.alquilados-r.devueltos,2) as
pendientes from prestamos p join (select p1.codigo,p1.cantidad as
alquilado,sum(d1.cantidad) as devueltos from prestados p1 left join
devoluciones d1 on p1.codigoÑ.codigo group by
p1.codigo,p1.cantidad) r on r.codigo=p.codigo where
p.alquilado>p.devuelto


"Salvador Ramos" escribió en el
mensaje news:%
Nos podrías poner la consulta completa ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
Estoy realizando un select que me da el siguiente error:

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

El select es el siguiente:

SELECT * FROM TABLA1 JOIN (SELECT * FROM TABLA2 WHERE CONDICION) ON
etc

He observado que este error lo da cuando el select que hace join
con tabla1 no tiene resultados.

Puedo pasar por alto este error y despreocuparme o hay alguna
manera montar el select para que no lo de.


Saludos y gracias.





























Respuesta Responder a este mensaje
#9 Salvador Ramos
21/02/2005 - 13:07 | Informe spam
Hola:

DDL significa Lenguaje de Definición de Datos, es la parte de instrucciones
de SQL que permite la creación, modificación y borrado de objetos. En tu
caso me refiero a los mandatos CREATE TABLE, para que tengamos las
estructuras de las tablas y las podamos crear para intentar reproducir tu
problema. A eso le añades unas instrucciones INSERT para llenar esas tablas
con los datos que tu tienes el problema. Con eso reproducimos el problema en
nuestras máquinas e intentamos ayudarte.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose Antonio" escribió en el mensaje
news:
Que es eso de los ddl, cómo los tengo que hacer?.

"Salvador Ramos" escribió en el
mensaje news:
Ambas expresiones son igual de correctas sólo depende de lo que necesites
obtener.

En cuanto a tu problema, como te he indicado, no consigo simularlo, por
eso pedí que enviases los ddl y algunas inserts con datos que permitiesen
reproducir el error.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
En tu segunda respuesta me decías de utilizar el case dentro de sum y lo
que hice fue utilizar coalesce para que no diese null, pero tambien da
null.

Cambie SUM(cantidad), por COALESCE(SUM(cantidad),0) y tambien me da el
mismo error.

1.-Con SUM(COALESCE(cantidad,0)) no me da el error, pero no se si es una
expresion correcta.

Segun tu segunda respuesta seria correcta:
2.-SUM(case when cantidad is null then 0 else cantidad end)

Cual seria la opcion mas correcta de las 2?


Gracias por tu ayuda.




"Salvador Ramos" escribió en el
mensaje news:OEL$
He intentado simular algo paretido a tu instrucción, pero no da ningún
error.
USE Northwind
GO
SELECT * FROM Customers C JOIN
(SELECT CustomerId, Freight, SUM(Freight) TotFr
FROM Orders
WHERE 0=1 -- para que no devuelva ninguna fila
GROUP BY CustomerId, Freight
) O
ON O.CustomerId = C.CustomerId

Puedes facilitarnos un script con las instrucciones DDL y con las
inserts de filas que produzcan ese error ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jose Antonio" escribió en el mensaje
news:
No, el problema no es que me devuelva columnas con valor null sino que
el select completo con el que se realiza el join no tiene resultados y
supongo que devuelve null, pero es una de las posibilidades, ese
select puede ser que no tenga resultados, porque no se haya devuelto
nada de lo que se presto.

"Salvador Ramos" escribió en el
mensaje news:
Problemas en si no te va a ocasionar, pero te recomiendo que mejores
el SELECT utilizando la instrucción CASE para evitar este error. Te
paso un ejemplo de uso dentro de SUM, también lo puedes incluir en
ROUND:
SELECT cliente, SUM(CASE WHEN Tipo = 'A' THEN canti ELSE 0 END) AS
TotalContado ...

En fin es solo una idea para mejorar tu SELECT, la verdad que voy muy
mal de tiempo ahora para montarla y enviartela depurada, lo siento.


Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:
Esta es la consulta:

select p.codigo,p.titulo,p.fecha,round(r.alquilados-r.devueltos,2)
as pendientes from prestamos p join (select p1.codigo,p1.cantidad as
alquilado,sum(d1.cantidad) as devueltos from prestados p1 left join
devoluciones d1 on p1.codigoÑ.codigo group by
p1.codigo,p1.cantidad) r on r.codigo=p.codigo where
p.alquilado>p.devuelto


"Salvador Ramos" escribió en
el mensaje news:%
Nos podrías poner la consulta completa ?

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"JOSE ANTONIO" escribió en el mensaje
news:%
Estoy realizando un select que me da el siguiente error:

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

El select es el siguiente:

SELECT * FROM TABLA1 JOIN (SELECT * FROM TABLA2 WHERE CONDICION)
ON etc

He observado que este error lo da cuando el select que hace join
con tabla1 no tiene resultados.

Puedo pasar por alto este error y despreocuparme o hay alguna
manera montar el select para que no lo de.


Saludos y gracias.

































email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida