Revisamos de forma cada tutorial de nuestra web con el objetivo de mostrarte siempre la información más veraz y actual.
Solución:
Los permisos para crear una tabla en la base de datos actual no deberían impedirle crear una con la que pueda trabajar. Simplemente puede crear una tabla #temp:
CREATE TABLE #test123(
c1 float,
c2 float,
c3 float,
c4 float,
c5 float
);
INSERT #test123(c1,c2,c3,c4,c5);
VALUES (2,3,NULL,1,2),
(2,NULL,NULL,1,2),
(2,3,NULL,NULL,2),
(NULL,3,NULL,1,NULL),
(2,3,NULL,1,2);
para ver porque ISNULL
no es efectivo aquí, ejecute esta consulta:
SELECT ISNULL(c1,1), ISNULL(c2,1), ISNULL(c3,1), ISNULL(c4,1), ISNULL(c5,1)
FROM #test123;
Le ha dado un valor a cada columna en cada fila. Entonces, ahora está evaluando la SUMA de valores inflados y evaluando erróneamente una propiedad del valor real (¿qué sucede cuando uno de los valores es negativo?), En lugar de evaluar el CONTEO de valores que son NULOS o NO NULOS.
Es más código, pero una forma sencilla de abordar esto es:
SELECT * FROM #test123
WHERE CASE WHEN c1 IS NULL THEN 1 ELSE 0 END
+ CASE WHEN c2 IS NULL THEN 1 ELSE 0 END
+ CASE WHEN c3 IS NULL THEN 1 ELSE 0 END
+ CASE WHEN c4 IS NULL THEN 1 ELSE 0 END
+ CASE WHEN c5 IS NULL THEN 1 ELSE 0 END < 2;
Debe usar una declaración de caso como esta:
SELECT *
FROM test123
WHERE (
(CASE WHEN C1 IS NULL THEN 1 ELSE 0 END +
CASE WHEN C2 IS NULL THEN 1 ELSE 0 END +
CASE WHEN C3 IS NULL THEN 1 ELSE 0 END +
CASE WHEN C4 IS NULL THEN 1 ELSE 0 END +
CASE WHEN C5 IS NULL THEN 1 ELSE 0 END)
< 2);
los ISNULL
el enfoque es devolver sus valores reales cuando el valor no es NULL
que empuja todas las filas sobre la marca 2.
Sección de Reseñas y Valoraciones
Eres capaz de añadir valor a nuestro contenido informacional contribuyendo tu experiencia en las anotaciones.