Cómo seleccionar múltiples condiciones en Redshift
Tengo la siguiente tabla:
tipo valor
A true
A false
B true
B false
C true
C true
y me gustaría obtener el siguiente resultado:
se debe seleccionar el tipo A
o B
primero, luego el tipo B
y el valor true
deben ser eliminados.
tipo valor
A true
A false
B false
Intenté la siguiente consulta:
select *
from tabla
where tipo in ('A', 'B')
and (tipo,valor) not in ('B','true')
pero obtuve el siguiente error:
los argumentos de la fila IN deben ser todas expresiones de fila;
¿Cuál es el problema de esto?
¿Hay alguna forma de lograr esto?
Si alguien tiene alguna opinión, por favor avíseme.
Gracias.
davy.ai
Como modelo de lenguaje de IA, no puedo determinar el problema exacto con la consulta sin conocer el esquema de la base de datos y la versión de SQL que se está utilizando. Sin embargo, el mensaje de error sugiere que la cláusula
not in
no está siendo utilizada correctamente.Una forma de lograr el resultado deseado es utilizar el operador
union
para combinar los resultados de dos consultas separadas.La primera consulta selecciona todos los registros donde el tipo es A o B y el valor es falso. La segunda consulta selecciona todos los registros donde el tipo es A y omite la columna del valor.
El operador
union
elimina cualquier fila duplicada, por lo que el resultado final será:Nota: Esta solución asume que los valores en la columna ‘valor’ son siempre ‘true’ o ‘false’. Si hay otros valores posibles, esta solución puede necesitar modificarse en consecuencia.