已自己解决. 谢谢大家.select * from (select sum(case when car.trueandfalse = 0 then car.trueandfalse end) as realsum, sum(case when car.trueandfalse = 1 then car.trueandfalse end) as falsesum from bascarinfo car)
SELECT SUM(trueandfalse) TRUECOLUMN,SUM(DECODE(trueandfalse,0,1,0)) FALSECOLUMN FROM XXX;
哈哈,所以还是自己多思考会,说不定就想出来了。 可惜你写的还是有问题,如果为假,你得到的结果还是0,sum(0)=0,应该这样写: select sum(case when car.trueandfalse = 0 then 1 end) as realsum, sum(case when car.trueandfalse = 1 then 1 end) as falsesum from bascarinfo car一般 的都会写成和楼主一样的,还可以这样写 select (select count(1) from bascarinfo where trueandfalse = 0) realsum, (select count(1) from bascarinfo where trueandfalse = 1) falsesum from dual;
decode判断求和 select sum(decode(trueandfalse,0,1,0)) realsum, sum(decode(trueandfalse,1,1,0)) falsesum from bascarinfo
when round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100, 2) = 0 then '0' || '%' else '' end as realrate from (select b.branchcode || b.branchname as bran, sum(decode(car.trueandfalse, 0, 1, '')) as realsum, sum(decode(car.trueandfalse, 1, 1, '')) as falsesum, sum(car.trueandfalse) as allcount from bascarinfo car inner join sys_branch b on car.allotorgan = b.branchcode group by b.branchcode, b.branchname) t
SELECT SUM(DECODE(trueandfalse,1,1,0)) T1,SUM(DECODE(trueandfalse,0,1,0)) t2 FROM XXX;
谢谢大家.select *
from (select sum(case
when car.trueandfalse = 0 then
car.trueandfalse
end) as realsum,
sum(case
when car.trueandfalse = 1 then
car.trueandfalse
end) as falsesum
from bascarinfo car)
可惜你写的还是有问题,如果为假,你得到的结果还是0,sum(0)=0,应该这样写:
select sum(case
when car.trueandfalse = 0 then
1
end) as realsum,
sum(case
when car.trueandfalse = 1 then
1
end) as falsesum
from bascarinfo car一般 的都会写成和楼主一样的,还可以这样写
select (select count(1) from bascarinfo where trueandfalse = 0) realsum,
(select count(1) from bascarinfo where trueandfalse = 1) falsesum
from dual;
select sum(decode(trueandfalse,0,1,0)) realsum,
sum(decode(trueandfalse,1,1,0)) falsesum
from bascarinfo
感谢兽兽哥
完整版SQLselect t.bran,
t.realsum,
t.falsesum,
t.allcount,
case
when round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100,
2) <> 0 then
round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100, 2) || '%'
when round(decode(t.allcount, 0, 0, t.realsum / t.allcount) * 100,
2) = 0 then
'0' || '%'
else
''
end as realrate
from (select b.branchcode || b.branchname as bran,
sum(decode(car.trueandfalse, 0, 1, '')) as realsum,
sum(decode(car.trueandfalse, 1, 1, '')) as falsesum,
sum(car.trueandfalse) as allcount
from bascarinfo car
inner join sys_branch b
on car.allotorgan = b.branchcode
group by b.branchcode, b.branchname) t