Я пытаюсь найти альтернативу использованию FULL OUTER JOIN для хранимой процедуры, которую я пишу.Вот сценарий.
Две таблицы в основном несвязанных данных, представляющих события, которые должны произойти.События должны быть обработаны в хронологическом порядке, и обе таблицы имеют столбец datetime.Поэтому мне нужно получить одну таблицу, которая действует как список ВСЕХ этих событий, упорядоченных по datetime (эти два столбца datetime необходимо смешать вместе).
Небольшой улов: иногда события из этих двух таблиц будутсвязанные, и в этом случае событие из таблицы A должно идти первым независимо от даты и времени.Поэтому, если у A есть 3 события, а у B - 3, но между A и B есть одна связанная пара, я хочу вернуть 5 строк.В тех случаях, когда есть несвязанные данные, будут NULL-данные (и это нормально, я использую NULL-проверки данных, чтобы определить, что делать дальше, то есть обрабатывать событие A или B и т. Д.)выглядит примерно так:
SELECT
CASE
WHEN A.EventDateTime IS NULL THEN B.EventDateTime
ELSE A.EventDateTime
END AS SortDateTime,
A.EventId,
B.EventId,
FROM A FULL OUTER JOIN B
ON A.RelatedData=B.RelatedData
ORDER BY SortDateTime