select region_code city_code ,
sum(decode(sale_type,0,1,0)*decode(brand_code,10002,1,0)*decode(type_code,10044,1,0)*decode(unit_price,600,1,0)) a_1
from tb_rpt group by region_code
做了一个统计,但是sum之后只取到了sale_type,brand_code,type_code,unit_price对应的个数,我想取的是上面四个条件所对应表里的另一个字段的合计,各位给个意见
sum(decode(sale_type,0,1,0)*decode(brand_code,10002,1,0)*decode(type_code,10044,1,0)*decode(unit_price,600,1,0)) a_1
from tb_rpt group by region_code
做了一个统计,但是sum之后只取到了sale_type,brand_code,type_code,unit_price对应的个数,我想取的是上面四个条件所对应表里的另一个字段的合计,各位给个意见
sum(decode(sale_type,0,sale_type,null)) 才是求和。
sum(decode(sale_type,0,1,0)是对sale_type=0的个数的计算
两种都会造成整个算式为0的楼主的条件还是有点点奇怪,
楼主所写的语句是:
当sale_type=0 返回1,否则返回0
当brand_code=10002返回1 否则返回0
当type_code=10044返回1,否则返回0
当unit_price=600返回1,否则返回0
然后将上面的所有的1或0相乘,结果只能是1或是0
然后再将1或0相加。
感觉逻缉很混乱,不清楚楼主到底是要什么
decode的用法是
decode(a,b,c,d) 如果a=b 则返回c 否则返回d
“sum(decode(sale_type,0,sale_type,null)) 才是求和。”应该为
sum(decode(sale_type,0,your_sum_field,0))不然有null相加的话一定会为null,除非每个sale_type为0。楼上认为是先*后SUM也是错误的。
它是对每块的SUM后才相乘的。