-- create CREATE TABLE A ( ID INTEGER PRIMARY KEY, isStatusA BOOLEAN NOT NULL, isStatusB BOOLEAN NOT NULL, isStatusC BOOLEAN NOT NULL ); CREATE TABLE B ( ID INTEGER NOT NULL, status text NOT NULL, a_id INTEGER NOT NULL ); -- insert INSERT INTO A VALUES (0, true, true, false), (1, false, true, false); INSERT INTO B VALUES (0, 'A', 0), (0, 'C', 0), (1, 'B', 1); -- fetch SELECT A.*, B_agg.status_agg FROM A INNER JOIN ( SELECT a_id, ARRAY_AGG(status) status_agg FROM B GROUP BY a_id ) B_agg ON A.ID = B_agg.a_id ;