himanshu himanshu - 1 month ago 9
SQL Question

Aggregate boolean values to true if any of the source columns is true

Let say I have the following table:

id column_a column_b column_c
1 t f t
2 t f f
3 f t f


From the above table, I want to:

select rows from id = 1,2;


The result should be:

column_a column_b column_c
t f t


If any of the rows among the defined id has a true for a particular column we assume the result to be true.

Answer

User the aggregate function bool_or().

SELECT bool_or(column_a) AS column_a
     , bool_or(column_b) AS column_b
     , bool_or(column_c) AS column_c
FROM   tbl
WHERE  id IN (1,2);

The manual:

true if at least one input value is true, otherwise false