DECODE ROUND case when

写了两周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

发布了29 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u011592166/article/details/52588713
今日推荐