내가 오라클 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의 고객이 없다고 가정하면 결과가 2 행 (AAA 및 CCC)으로 반환됩니다.
내가 원하는 것 : 3 개의 회사 모두에 대해 쿼리가 나를 돌려 주길 바란다. 심지어 그 수는 0이다.
검색어가 이상하게 생겨서 죄송합니다. MS Excel에서도 작동합니다.
편집 : 죄송 .. 너무 적은 카페인. 쿼리의 후반부에 "고객"을 "회사"로 변경했습니다.
설명 : 고객은 "h.company"및 "h.customer"(또는 고객 테이블 (고객 c)에서 동일한 방법 (예 : c.company 및 c. 고객 "
편집 2 :. 3020
내가 BBB가 표현하고 싶은 AAA (630) CCC를 다음과 같이 업데이트 된 코드 위의 코드
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
두 세트는 두 행을 얻을 것입니다 하지만 그들은 역사상 제로 행을 가지고 있기 때문에, 그들은 보여주지 않는다.
쿼리에 약간의 오류가 있습니다. – Numpus