Я почти уверен, что знаю, что вы хотите, но не уверен на 100%, что в запросе ссылается на ch.status. Также я не уверен, что из предоставленной информации вы можете добиться того, чего хотите ...
Надеемся, что структуры данных находятся под вашим контролем, поэтому вы можете настроить их так, как хотите.
Если я правильно прочитал вашу спецификацию, то я думаю, что вам нужен / нужен только 1 экземпляр таблицы сайта в запросе, но тогда неясно, как вы идентифицируете адрес клиента.
Одним из способов решения этой проблемы является наличие у таблицы сайта флага main_address. (Я думаю, что это путаница вокруг ch.status)
Если на таблице сайта есть флаг, то ...
ГДЕ c.idcompany = cwp.idcompany
И cwp.site_id = wp.site_id
А ТАКЖЕ (
(C.STATUS = 'C' И WP.MAIN_ADDRESS = 1) ИЛИ
(C.STATUS = 'A' И WP.SITE_ID = C.BILL_SITE_ID)
)
Другим способом было бы иметь адреса главного адреса и биллинга в качестве внешних ключей в таблице клиентов и забыть о флаге статуса так:
WHERE WP.SITE_ID = DECODE (C.BILLING_ADDRESS, NULL, C.MAIN_ADDRESS, C.BILLING_ADDRESS)
Если это не имеет смысла, возможно, вы можете опубликовать ОПИСАНИЕ задействованных таблиц.