Я использую Oracle 10.2 и имеют следующий запрос:Я хочу, чтобы количество Sqlplus (*), чтобы вернуть нулевые значения
select h.company, count(*)
from history h
where h.status = '2'
and h.substatus = '0'
and h.timestamp > '2012-01-01'
and h.timestamp < '2012-02-01'
group by h.company
having (h.company = 'AAA')
or (h.company = 'BBB')
or (h.company = 'CCC')
order by h.company
Это сосчитать количество раз любой клиент от компании AAA, BBB или CCC достиг определенной точки (статус = 2).
Предположите, что нет (ноль) клиентов из BBB, результат вернется с двумя строками счета (AAA и CCC).
Что я хочу: Я хочу, чтобы запрос возвращал мне строки для всех трех компаний, даже если счет равен нулю.
Извините за нечетное расположение запроса. Он также работает с MS Excel.
Редактировать: Извините .. Слишком маленький кофеин. изменил «Клиент» в более поздней половине запроса на «Компания».
Уточнение: Клиент создан уникально, объединяя «h.company» и «h.customer» (или используя тот же метод в таблице клиентов (клиент c), например «c.company» и «c. клиент»
Edit 2:. Обновленный код
select c.company, count(*)
from companyregister c
left join history h on h.company = c.company
where h.status = '2'
and h.substatus = '0'
and h.timestamp > '2012-01-01'
and h.timestamp < '2012-02-01'
group by c.company
having (c.company = 'AAA')
or (c.company = 'BBB')
or (c.company = 'CCC')
order by c.company
Оба набора кода сверху дадут две строки следующим образом: AAA 630 CCC 3020
Я хотел бы иметь ВВВ представлял, но поскольку они имеют нулевые строки в истории, они не показывают.
Сделано несколько ошибок в запросе. Изменил «клиент» на «компанию». Извините, что – Numpus