需求如下: 比如表中有一列flag。包含的值有0、1、2这三个状态。 我们需要分别统计出flag为0、1、2的行各有多少个。用一条SQL实现。 解决如下: select sum(case when flag=0 then 1 else 0 end) cnt1, sum(case when flag=1 then 1 else 0 end) cnt2, sum(case when flag=2 then 1 else 0 end) cnt3, from table; 或者 select count(case when flag=0 then 1 else null end) cnt1, count(case when flag=1 then 1 else null end) cnt2, count(case when flag=2 then 1 else null end) cnt3, from table;