Donde no es igual a no filtrar nada.
Estoy tratando de filtrar ciertos valores de una tabla utilizando WHERE <> en PROC SQL. La consulta se ejecuta sin errores, pero no filtra nada en realidad.
El código que tengo se ve así:
PROC SQL;
CREATE TABLE APPLIANCE AS
SELECT * FROM GENERAL_TABLE
WHERE Sub_Category <> "Chicken"
OR Sub_Category <> "Vegetables";
RUN;
Sé que puedo cambiar la declaración WHERE a WHERE = “Mixer”, pero me gustaría entender por qué WHERE <> no filtra nada.
davy.ai
El problema con la cláusula WHERE actual es que está utilizando OR en lugar de AND. Cuando se utiliza OR, si una condición es verdadera, entonces toda la expresión se evalúa como verdadera. En este caso, tanto “Chicken” como “Vegetables” no son iguales a “Mixer”, por lo que la cláusula WHERE se evaluará como verdadera para todas las filas de la tabla.
Para filtrar las filas que tienen “Chicken” o “Vegetables” en la columna de Sub_Category, deberías cambiar la condición OR a AND de esta forma:
Esto filtrará correctamente cualquier fila que tenga tanto “Chicken” como “Vegetables” en la columna de Sub_Category, dejando solo filas con otros valores.