Oracle - return multiple counts as one query

前端 未结 3 1595
旧巷少年郎
旧巷少年郎 2021-02-19 11:50

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         


        
相关标签:
3条回答
  • 2021-02-19 12:18

    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
    
    0 讨论(0)
  • 2021-02-19 12:28

    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.

    0 讨论(0)
  • 2021-02-19 12:29

    You could use a with statement:

    with
    count1 as (
    select ...
    ),
    count2 as (
    select ...
    )
    select tot1, tot2
    from count1, count2
    
    0 讨论(0)
提交回复
热议问题