Usar SELECT UNION y devolver el resultado de dos columnas de una tabla

Estoy creando una consulta que count la cantidad de actores masculinos y femeninos en mi table. Mi statement actual es como tal:

Select COUNT(ActorGender) “Male Actors” from (tblActor ta WHERE ta.ActorGender in('m') UNION Select COUNT(ActorGender) “Female Actors” from tblActor ta WHERE ta.ActorGender in('f'); 

La salida termina siendo:

 Male Actors ----------- 7 21 

Quiero que la salida se vea así:

 Male Actors Female Actors ----------- ------------- 7 21 

Estoy buscando una alternativa para hacer esto sin usar las cláusulas CASE WHEN o THEN.

Gracias de antemano por la ayuda como de costumbre.

Otra forma sin usar el estuche:

 select sum(males) as "Male Actors", sum(females) as "Female Actors" from (select count(actorGender) as Males, 0 as Females from tblActor where actorGender = 'm' union all select 0 as males, count(actorGender) as Females from tblActor where actorGender = 'f') 

debería resultar en

 Male Actors Female Actors ----------- ------------- 7 21 

Esto haría:

 SELECT COUNT(CASE WHEN ActorGender = 'm' THEN 1 ELSE NULL END) MaleActors, COUNT(CASE WHEN ActorGender = 'f' THEN 1 ELSE NULL END) FemaleActors FROM tblActor WHERE ActorGender IN ('m','f') 

Otra forma (sin expresión CASE ):

 SELECT ( SELECT COUNT(*) FROM tblActor WHERE ActorGender = 'm' ) AS MaleActors , ( SELECT COUNT(*) FROM tblActor WHERE ActorGender = 'f' ) AS FemaleActors FROM dual ; 

y más solución con CROSS join:

 SELECT m.MaleActors, f.FemaleActors FROM ( SELECT COUNT(*) AS MaleActors FROM tblActor WHERE ActorGender = 'm' ) m CROSS JOIN ( SELECT COUNT(*) AS FemaleActors FROM tblActor WHERE ActorGender = 'f' ) f ; 

Si está utilizando Oracle 11g +, puede usar PIVOT :

 select * from ( select actorgender from tblActor ) src pivot ( count(actorgender) for actorgender in ('m' MaleActors, 'f' FemaleActors) ) piv 

Ver SQL Fiddle con demostración

El resultado sería:

 | MALEACTORS | FEMALEACTORS | ----------------------------- | 4 | 5 | 

O puede usar CROSS JOIN para get el mismo resultado:

 select m.MaleActors, f.FemaleActors from ( select count(ActorGender) MaleActors, 'm' Gender from tblActor where ActorGender = 'm' ) m cross join ( select count(ActorGender) FemaleActors, 'f' Gender from tblActor where ActorGender = 'f' ) f