当前位置: 代码迷 >> Oracle开发 >> oracle 查询总记录数有关问题
  详细解决方案

oracle 查询总记录数有关问题

热度:24   发布时间:2016-04-24 07:18:47.0
oracle 查询总记录数问题
有表 order 
ID name status  
----------------------
01 aaa 01
----------------------
02 aba 02
----------------------
03 abc 03
----------------------
04 baa 01
----------------------
05 bac 01

 现要查询 总记录数和 status 为 ‘01’的记录数之差。。。。。

用sql语句怎么做??????

------解决方案--------------------
SQL code
select count(1)-count(case when status = 1 then 1 else null end)  from order;
------解决方案--------------------
select count(1) - count(case
when status = '01' then
1
else
0
end)
from order;
------解决方案--------------------
SQL code
with t as(select '01' id,'aaa' name,'01' status from dualunion allselect '02' id,'aba' name,'02' status from dualunion allselect '01' id,'aaa' name,'01' status from dual)select tab1.a - tab2.b  from (select count(1) a from t) tab1,      (select count(1) b from t where t.status = '01') tab2
------解决方案--------------------
SQL code
--查询 总记录数和 status 为 ‘01’ 且 name 是 ‘aaa’,的记录数之差select count(1)-sum(case when status = '01' and name = 'aaa' then 1 else 0 end)from order;-- 查询 总记录数和 status 为 ‘01’ 或者 ‘03’ 的记录数之差select count(1)-sum(case when status in ('01','03') then 1 else 0 end)from order;
  相关解决方案