Saltar al contenido

Cómo agregar una columna booleana

Solución:

Simplemente haz un GROUP BY, usar MAX() para devolver T si está disponible, de lo contrario F.

select col_1, max(col_2), max(col_3), max(col_4)
from tablename
group by col_1

Solo como nota al margen (no funciona con Oracle): en PostgreSQL, haría esto:

select col_1, bool_or(col_2), bool_or(col_3), bool_or(col_4)
from tablename group by col_1 order by col_1

Si COL_2 para COL_4 son columnas de texto (char, varchar, varchar2, nvarchar, nvarchar2) que contiene 'T' o 'F', entonces puedes simplemente tomar el MAX de ellos, desde 'T' > 'F', es decir 'T' viene después 'F' en orden léxico.

SELECT COL_1, MAX(COL_2) AS COL_2, MAX(COL_3) AS COL_3, MAX(COL_4) AS COL_4
FROM table
GROUP BY COL_1

Explicación: La operación locical OR devuelve VERDADERO, si al menos uno de los operandos es VERDADERO. MAX () devuelve "T" si al menos un valor es "T" y de lo contrario "F".


Nota: Si las columnas booleanas se declararon como

COL_x NUMBER(1) DEFAULT 0 NOT NULL

o cualquier otro tipo numérico, entonces tomaría MAX(ABS(col_x)), ya que un valor negativo también cuenta como VERDADERO. (Si tiene una interfaz de Access con un ComboBox adjunto a un booleano, produce los valores 0 o -1.)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *