DECODE,trunc,ROUND,mod

 

to_char(doc.create_date,'yyyy/MM/dd HH24:MI') as create_date,

 

DECODE(item.category,'冷藏',pt.cold_batch_no,pt.freeze_batch_no) as batch_no,

trunc(x [,y]),其中如果没有指定y,则对x在0位小数进行截断. 

例如:TRUNC(5.75)=5.

如果y是负数,则对x在小数点左边的第|y|位处进行截断,例如:TRUNC(5.75, -1)=0      5.75 看成 0005.75000  从小数点左边第一位往左边截,等于0。

ROUND函数是对数值进行取整,

例如:ROUND(5.75)=6,表示对5.75在0位小数处进行取整,这里0位小数是没有,不是7, 7是第一位小数了。

ROUND(5.75, 1)=5.8,这里第一位小数是7   四舍五入就是 5.8  。

ROUND(5.75, -1)=10,对5.75在左边第|-1|位取整,小数点左边第一位是个位,同样看成  00005.75000, 从个位的左边开始取,并四舍五入。  个位是5 左边的十位是0, 由于5是进1的,所以是10.

 

 

mod函数是一个求余函数,其格式为:MOD(number,divisor),即是两个数值表达式作除法运算后的余数。那么:两个同号整数求余与你所知的两个正数求余完全一样(即两个负整数与两个正整数的算法一样),

即两数取余后返回两数相除的余数。

函数MOD可以借用函数 INT 来表示:MOD(n, d) = n - d*INT(n/d)                                                                   示例:

  MOD(3, 2) 等于 1  

      MOD(-3, 2) 等于1(与后面的数的符号相同)  

      MOD(3, -2) 等于-1(与后面数的符号相同)

   DECODE,trunc,ROUND,mod

 

      MOD(-3, -2) 等于 -1  

      MOD(-3, 0) 等于-3  

      MOD(3, 0) 等于3

  MOD(2,0) 等于2   

算 法

一、两个异号整数求余  1.函数值符号规律(余数的符号) mod(负,正)=正 mod(正,负)=负  结论:两个整数求余时,其值的符号为除数的符号。  2.取值规律 先将两个整数看作是正数,再作除法运算  ①能整除时,其值为0 (或没有显示)  ②不能整除时,其值=除数×(整商+1)-被除数  例:mod(36,-10)=-4 即:36除以10的整数商为3,加1后为4;其与除数之积为40;再与被除数之差为(40-36=4);取除数的符号。所以值为-4。  二、两个小数求余 取值规律:  被除数-(整商×除数)之后在第一位小数位进行四舍五入。  例:mod(9,1.2)=0.6即:9除1.2其整商为7;7与除数1.2之积为8.4;被除数9与8.4之差为0.6。故结果为0.6。

  例:mod(9,2.2)=0.2 即:9除2.2其整商为4;4与除数2.2这积为8.8;被除数9与8.8之差为0.2,故结果为0.2.                                       

 

 

综合运用:

(

DECODE

     (

      (trunc(detail.order_quantity/(select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id)) ),0,null,

      (trunc(detail.order_quantity/(select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id)) )

     ) || 

DECODE

     (

      (trunc(detail.order_quantity/(select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id)) ),0,null,

      (select pu.unit from wms_package_unit pu where pu.item_id=item.id and pu.convert_figure = 

      (select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id))

     ) || 

DECODE

     (

      (mod(detail.order_quantity,(select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id)) ),0,null,

      (mod(detail.order_quantity,(select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id)) ) 

     ) ||

DECODE

     (

      (mod(detail.order_quantity,(select max(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id)) ),0,null,

      (select pu.unit from wms_package_unit pu where pu.item_id=item.id and pu.convert_figure =  

      (select min(pu.convert_figure)from wms_package_unit pu where pu.item_id=item.id) ) 

     )

 ) as 换算数量

 

你可能感兴趣的:(decode)