I have a couple of queries, detailed below. I\'d like to be able to run one SQL query which returns both counts, is this possible?
1.
select nvl(count(ro
If the condition really looks like that (same table, only one field different in the groups):
select opp, count(*) from tablename
where date = 'BAZ'
group by opp
having opp in ('FOO', 'BAR');
For arbitrary queries:
select 'A', count(*) from tableA
union all
select 'B', count(*) from tableB
If you need them in a single row:
SELECT
COUNT(CASE OPP WHEN 'FOO' THEN 1 END),
COUNT(CASE OPP WHEN 'BAR' THEN 1 END)
FROM tablename
WHERE OPP IN ('FOO', 'BAR') AND date = 'BAZ'
(The GROUP BY approach by Thilo is a better generic solution anyway.)
Edit: I've removed NVL()
. I had forgotten why I never use it.
You could use a with statement:
with
count1 as (
select ...
),
count2 as (
select ...
)
select tot1, tot2
from count1, count2