Waterfall join in Oracle SQL
Never heard of a waterfall join, but based on your description:

SELECT A.*, COALESCE(B.col3, C.col3) AS col3 ...
  FROM A
  LEFT JOIN B
    ON A. col1 = B.col1
    AND A.col2 = B.col2
  LEFT JOIN B AS C
    ON A.col1 = C.col1
    AND B.col1 IS NULL;