我有几个问题,详情如下.我希望能够运行一个返回两个计数的SQL查询,这可能吗?
1.
select nvl(count(rowid), 0) from tablename where OPP = 'FOO' and date = 'BAZ';
Run Code Online (Sandbox Code Playgroud)
2.
select nvl(count(rowid), 0) from tablename where OPP = 'BAR' and date = 'BAZ';
Run Code Online (Sandbox Code Playgroud)
到目前为止,我只在搜索中找到了MSSQL特定的解决方案.
如果您需要它们在一行中:
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'
Run Code Online (Sandbox Code Playgroud)
(无论如何,Thilo的GROUP BY方法是一种更好的通用解决方案.)
编辑:我已删除NVL().我忘记了为什么我从不使用它.
如果条件真的如此(同一个表,组中只有一个字段不同):
select opp, count(*) from tablename
where date = 'BAZ'
group by opp
having opp in ('FOO', 'BAR');
Run Code Online (Sandbox Code Playgroud)
对于任意查询:
select 'A', count(*) from tableA
union all
select 'B', count(*) from tableB
Run Code Online (Sandbox Code Playgroud)