Oracle - считать () в той же строке - PullRequest
0 голосов
/ 22 сентября 2011

Я новый пользователь здесь, и я думаю, что это удивительно !!! Мне нужна небольшая помощь:

Я делаю это, но не работаю так, как хочу! (count (countOfCat) это не хорошо!)

select count(countOfCat) as "Cat", count(countOfDog) as "dog", count(countOfHorse) as "horse", 0 as "duck", 0 as "Mouse"
from animal
where Birthdate in
        (...
         -- i think not important
         ...
        )
        and ( species= 'cat' or species= 'dog' or species= 'horse')
group by species

Я хочу получить вот так

Cat     Dog     Horse   Duck   mouse
------- ------- ------- ------  -------
1234    2345    3456     0      0

...

Мне нужно, чтобы все счетчики были в одном ряду.
Я не могу использовать это

noGood- Cat   Dog     Horse   Duck    mouse
noGood- ----- ------ -------- ------- -------
noGood- 1234  0       0       0         0
noGood- 0     2345    0       0         0
noGood- 0     0       3456    0         0

Спасибо за ваше время!
Da!

Ответы [ 3 ]

6 голосов
/ 22 сентября 2011
select sum(case when species = 'cat' then 1 else 0 end) as "Cat", 
       sum(case when species = 'dog' then 1 else 0 end) as "Dog", 
       sum(case when species = 'horse' then 1 else 0 end) as "Horse", 
       0 as "duck", 
       0 as "Mouse"
from animal
where species in ('cat', 'dog', 'horse')
1 голос
/ 22 сентября 2011

Я тоже считаю удивительным, что ты здесь новенький. : D

select
  (select count(*) from animal a where a.species = 'cat') as Cat,
  (select count(*) from animal a where a.species = 'horse') as Horse,
  (select count(*) from animal a where a.species = 'duck') as Duck
from
  dual

NB: dual - системная таблица, в которой всегда есть одна строка. Это очень удобно для таких трюков.

0 голосов
/ 22 сентября 2011

Очень просто.Все, что вам нужно сделать, это удалить группу по предложению: D

select count(countOfCat) as "Cat", count(countOfDog) as "dog", count(countOfHorse) as "horse", 0 as "duck", 0 as "Mouse"
from animal
where Birthdate in
        (...
         -- i think not important
         ...
        )
        and ( species= 'cat' or species= 'dog' or species= 'horse')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...