Проблема здесь заключается в том, что вы объединяете таблицы с отношением 1 ко многим с таблицей tblFuneralHomes
, но вы ожидаете только одну строку на похоронное бюро.
Вместо использования distinct
, я бы предложилвместо этого вы группируете по требуемым выходным столбцам похоронных бюро, а затем применяете какой-либо агрегат к столбцам, необходимым из соединенных таблиц, чтобы получить только одно вычисленное значение из всех возможных объединенных значений.
Например,ниже мы находим первую дату транзакции (min
), связанную с каждым похоронным бюро:
select h.funeral_home_name, h.funeral_home_guid, h.address1, h.city, h.state,
p.discount_available, min(t.date_created)
from tblFuneralHomes h
inner join tblFuneralTransactions t on h.funeral_home_guid = t.funeral_home_guid
inner join vwFuneralHomePricing p on h.funeral_home_guid = p.funeral_home_guid
where completed=0
group by h.funeral_home_name, h.funeral_home_guid, h.address1, h.city, h.state,
p.discount_available
order by h.funeral_home_name asc
Обратите внимание, что в зависимости от количества элементов связи между tblFuneralHomes
и vwFuneralHomePricing
вам также может понадобитьсяудалить p.discount_available
из группировки, а также представить его с помощью функции агрегирования, аналогично тому, что я сделал с t.date_created