Это определенно должно быть возможно, если в столбцах Sub1 и Sub2 представлена «дата последнего вхождения». Обратите внимание, что код, который я перечисляю, в основном является псевдокодом ... вам придется заполнять пробелы в соответствии с вашим видом dbms.
Чтобы ограничить ваш набор результатов только столбцами в SUPER и SUB1 (без дублирования):
SELECT DISTINCT sub1.*, super.*
(очевидно, вам следует избегать SELECT * ... выбрать столбцы, которые вам действительно нужны)
Ваше предложение FROM будет выглядеть примерно так:
FROM super INNER JOIN sub1 ON super_id
LEFT JOIN sub2 ON super_id AND sub1_id
И ORDER BY будет использовать функцию COALESCE (если ваша база данных поддерживает это), чтобы выяснить, по какому столбцу сортировать (COALESCE выбирает первое ненулевое значение в списке аргументов):
ORDER BY COALESCE(sub2.dateColumn, sub1.dateColumn)
В качестве альтернативы, если у вас нет COALESCE, но у вас есть функция ISNULL, вы можете связать ISNULL:
ORDER BY ISNULL(firstDateColumn, ISNULL(secondDateColumn, thirdDateColumn))