FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Advertencia. Valor nulo eliminado del agregado
Hola amigos, estoy trabajando con la base de datos sql server 2000 y tengo la siguiente consulta sql:
select categry.Contents as Categoria, avg(case when DATEDIFF(ss, visit.NExtTime, visit.Endtime)>=20 then DATEDIFF(ss, visit.NextTime, visit.Endtime) END) Tiempo_Atencion from visit,categry where visit.branchno=2 and Visit.Category=CATEGRY.Category and Categry.branchno=2 and visit.Regdate='2006-09-01'-- and visit.Regdate<='2007-11-17' group by visit.category,categry.Contents order by categry.Contents Al ejecutar la consulta me retorna el resultado correcto pero me da la siguiente advertencia: Advertencia. Valor nulo eliminado del agregado. Como puedo hacer o que modifico en la consulta para que no me de ese warning?. Gracias por sus prontas respuestas. Saludos. |
#2
|
||||
|
||||
puedes utilizar la función isnull en tus campos para considerar un valor por default en la generáción del promedio.
aunque considero que la omisión de nulos es correcta ya que estás generando estadísticas con fecha y remplazar nulos con fechas predeterminadas puede afectar tu promedio. Simple observación mia. Suerte
__________________
Conoce mi blog http://www.edgartec.com |
#3
|
|||
|
|||
Es decir, en este tipo de consultas está correcto que salga ese tipo de advertencias?. He intentado cambiar la consulta para que no me de esa advertencia pero el resultado ha cambiado completamente y no es el resultado esperado. He cambiado por esta sentencia sql:
select categry.Contents as Categoria, avg(ISNULL(case when DATEDIFF(ss, visit.NExtTime, visit.Endtime)>=20 then DATEDIFF(ss, visit.NextTime, visit.Endtime) END,0)) Tiempo_Atencion from visit,categry where visit.branchno=2 and Visit.Category=CATEGRY.Category and Categry.branchno=2 and visit.Regdate='2006-09-01'-- and visit.Regdate<='2007-11-17' group by visit.category,categry.Contents order by categry.Contents Espero tus comentarios. Gracias por tu tiempo. Saludos. |
#4
|
||||
|
||||
Si el resultado de la primera consulta es el correcto, yo añadiría en el where:
No trabajo con sqlserver, pero creo que vale. Si usas ISNULL y el nexTime es un nulo, se contará ese registro en el agregado, colocando un cero para ese registro al hallar la media (avg). Si usas mi sugerencia, eliminas los registros con valores nulos antes de hacer el agregado, así no entran en la media y eliminas el aviso de sqlserver. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
He utilizado tu sugerencia, de tal manera que la consulta quede de la siguiente manera pero igual me sigue saliendo el warning.
select categry.Contents as Categoria, Case when avg(case when DATEDIFF(ss, visit.NExtTime, visit.Endtime)>=20 then DATEDIFF(ss,visit.NextTime, visit.Endtime) END ) >0 then avg(case when DATEDIFF(ss, visit.NExtTime, visit.Endtime)>=20 then DATEDIFF(ss, visit.NextTime, visit.Endtime) END ) else 0 END Tiempo_Atencion from visit,categry where visit.branchno=2 and Visit.Category=CATEGRY.Category and Categry.branchno=2 and visit.Regdate ='2006-09-01' and (visit.Regdate is not null) and (visit.NExtTime is not null) and (visit.Endtime is not null) group by visit.category,categry.Contents order by categry.Contents Que es lo que estoy haciendo mal o como deberia quedar la consulta? Gracias por tu tiempo. Saludos. |
#6
|
||||
|
||||
despúes del avg utiliza isnull( ResultadoDelCase,Convert(DateTime,'FechaDefault',120) )
suerte
__________________
Conoce mi blog http://www.edgartec.com |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Asignar valor nulo a un entero | Shikanda | SQL | 3 | 27-08-2007 14:26:23 |
Valor nulo en un string | ElDioni | Conexión con bases de datos | 5 | 10-11-2005 09:29:57 |
Valor Nulo o en blanco y nil | vtdeleon | OOP | 1 | 25-11-2004 05:41:50 |
Campo con valor nulo | fjcg02 | Conexión con bases de datos | 4 | 10-11-2004 08:55:07 |
Valor nulo | pache | OOP | 3 | 19-06-2003 08:39:13 |
|