Трудно понять, что вы хотите с вопросом, как написано, но вот моя попытка.
WITH rand_list AS
(SELECT * FROM comp_eval_hdr
WHERE comp_eval_hdr.START_DATE BEWTWEEN TO_DATE('01-JAN-16' , 'DD-MON-YY') AND TO_DATE('12-DEC-17' , 'DD-MON-YY')
ORDER BY DBMS_RANDOM.VALUE)
first_100 AS
(SELECT *
FROM rand_list
WHERE ROWNUM <=100)
SELECT md.col_1, t3.col_a
FROM first_100 md
INNER JOIN
table2 t2 ON md.id_column = t2.fk_comp_eval_hdr_id
INNER JOIN
table3 t3 ON t3.id_column = t2.fk_table3_id
Вы не дали никаких указаний на то, как они объединяются, или на имена таблиц, и, очевидно, я не проверял это ни на каких фиктивных таблицах.
У вас есть список рандомизированных записей с RAND_LIST, который вы можете, если хотите, объединить с запросом FIRST_100 (на ваш выбор).
Затем основной запрос просто присоединяет его через таблицу сопоставления (T2) к таблице «кратных» (T3).