写了两周i的sql,真是醉了,但是收获也挺大的,认识了很多函数,所以就赶紧积累下来
写个例子,废话不多说
<span style="font-size:24px;">select
count(1) as n1 ,--总人数
SUM(<span style="color:#ff6666;">DECODE</span>(B.AAD002,'2',1,0) ) AS n2,--女人数
<span style="color:#3366ff;">round</span>(<span style="color:#ff6666;">decode</span>(count(1),0,0,(SUM(DECODE(B.AAD002,'2',1,0) )/COUNT(1))),4) * 100 AS n3 --女性比例
from
aa01_2014 a ,ah02_2014 b
where a.aaa001 = b.aaa001
and a.aah006 = '1'
and b.aah006 = '1' </span>
这段sql中 DECODE 函数是 如果aad002 字段值是2,那么赋值为1,否则就是0,也可以加条件,
<span style="font-size: 24px;">DECODE(B.AAD002,'2',1,'3',2,'4',3)</span>
ROUND 函数是保留几位小数
我这边是保留4为小数
select
SUM(DECODE(a.AAH009,'1',1,'2',1,0) ) AS b2,--(预)脱贫户数
sum(DECODE(a.AAH009,'1',a.aac017,'2',a.aac017,0)) as b3,--(预)脱贫人口数
sum( case when a.aah009 = '1' then ( select count(1) from ah02_2014 where aaa001= a.aaa001 and aad014 = '1' )
else 0 end ) as b4,--增加人数
sum( case when a.aah009 = '1' then ( select count(1) from ah02_2014 where aaa001= a.aaa001 and aad014 = '2' )
else 0 end ) as b5,--减少人数
from aa01_2014 a
where a.aah006 = '1'
case when 如果aah009是1的值,那么执行后边then语句,否则就是0