himanshu himanshu - 4 months ago 22
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.


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