У меня есть запрос ниже:
SELECT EMAIL.MAILADDRESS, COUNT (DISTINCT CUSTOMER.CUSTOMER_ID) distinct_count
FROM ( SELECT CUSTOMER_ID,
TRUNC (MAX (UPDATE_DATE)) AS UPDATE_TARIHI,
TRUNC (MIN (INSERT_DATE)) AS DATA_ENTRY_DATE,
'YES' AS MAILADDRESS
FROM ELECTRONIC_ADDRESS
WHERE ADDRESS_TYPE = 'ELECTRONIC'
GROUP BY CUSTOMER_ID) EMAIL
RIGHT OUTER JOIN
CUSTOMER
ON (EMAIL.CUSTOMER_ID = CUSTOMER.CUSTOMER_ID)
GROUP BY EMAIL.MAILADDRESS
Я присоединяюсь к таблицам электронной почты (подзапрос 'E' AS MAILADDRESS) и клиентов.У некоторых клиентов нет адреса электронной почты, поэтому я думаю, что результат должен выглядеть следующим образом:
MAILADDRESS DISTINCT_COUNT
YES 158945
NULL 76345
Но когда я запускаю этот запрос, отображается только первая строка (адрес электронной почты которой YES)
Если я изменю условие EMAIL.MAILADDRESS на nvl (EMAIL.MAILADDRESS, 'NO') в выбранных столбцах и группирую по частям, запрос выполняется отлично.Но я не смог решить проблему и не могу изменить запрос, потому что этот запрос генерируется из Business Objects Universe.
Мы пишем эту часть:
SELECT CUSTOMER_ID,
TRUNC (MAX (UPDATE_DATE)) AS UPDATE_TARIHI,
TRUNC (MIN (INSERT_DATE)) AS DATA_ENTRY_DATE,
'YES' AS MAILADDRESS
FROM ELECTRONIC_ADDRESS
WHERE ADDRESS_TYPE = 'ELECTRONIC'
GROUP BY CUSTOMER_ID
, а затем создаемПравильное соединение между этой частью и таблицей клиентов.
Как решить проблему?И почему Oracle не показывает нулевые значения?