es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    PROC SQL;
    CREATE TABLE APPLIANCE AS 
    SELECT * FROM GENERAL_TABLE
    WHERE Sub_Category <> "Chicken"
    AND Sub_Category <> "Vegetables";
    RUN;
    

    Esto filtrará correctamente cualquier fila que tenga tanto “Chicken” como “Vegetables” en la columna de Sub_Category, dejando solo filas con otros valores.

Comments are closed.