Мне жаль, что я не могу точно понять, в чем ваша проблема, но мне интересно, связана ли ваша проблема с тем, что оператор "UNION" удалит дублирующиеся строки (вроде как "SELECT DISTINCT" над объединенным запросом). Если вы не хотите такого поведения, используйте вместо этого «UNION ALL».
Еще одна вещь, которую я сразу заметил, была эта часть: "(pat.LastAdDate> 7/1/2009)". Похоже, вы пытаетесь сравнить «LastAdDate» с жестко заданным значением даты. В действительности вы сравниваете «LastAdDate» со значением 7, деленным на 1, деленным на 2009 год. Поскольку это целочисленное деление, ваше выражение по существу «(pat.LastAdDate> 0)».
Если вы действительно хотите сравнить с жестко запрограммированной датой, вам нужно поместить значение даты в одинарные кавычки, например, «(pat.LastAdDate> '01.07.2009')». В производственном приложении жестко закодированные даты - плохая идея, но я предполагаю, что это только для целей тестирования / отладки.