是的,那里肯定有几十个类似的问题我已经尝试了20或30个排列,但我仍然难过。这是最简单的缩减:
select MyMethodNbr, count(*) from MyDB
where MyMethodNbr in (33, 57, 150, 160, 200, 240)
group by MyMethodNbr
order by MyMethodNbr ASC
表中不存在MyMethodNbr列表中的某些项目,但我想将空值转换为零。我只能获得一个非零计数表。
答案 0 :(得分:1)
您可以使用left join
执行此操作。这是典型的语法:
select n.n as MyMethodNbr, count(MyDB.MyMethodNbr) as num
from (select 33 as n union all select 57 union all select 150 union all select 160 union all
select 200 union all select 240
) n left join
MyDB
on MyDB.MyMethodNbr = n.n
group by n.n
order by num ASC;
在某些数据库中,您需要from dual
或类似的构造来创建数字列表。
答案 1 :(得分:-1)
select ISNULL(MyMethodNbr,0), count(*) from MyDB
where MyMethodNbr in (33, 57, 150, 160, 200, 240)
group by MyMethodNbr
order by MyMethodNbr ASC