WITH test ( a, b, c ) AS ( -- ... truncated ... ) SELECT * FROM test WHERE ( ( a > 2 ) OR ( a = 2 AND b > 2 ) OR ( a = 2 AND b = 2 AND c >= 2 ) ) AND ( ( a < 3 ) OR ( a = 3 AND b < 1 ) OR ( a = 3 AND b = 1 AND c < 1 ) ) ;