oracle查询时根据某一列的条件修改列值
(有点拗口),请往下看
一前提:
业务数据车辆表,简化一下吧,共三列,
计算的列为number
类型
id(主键):id
吨位:gross_mass
核定载质量:vehicle_tonnage
查询结果替换加个判断,
吨位(gross_mass)如果小于核定载质量(vehicle_tonnage)
那么吨位(gross_mass)=吨位(gross_mass)+核定载质量(vehicle_tonnage)
即查出来
如果gross_mass<vehicle_tonnage
则gross_mass=gross_mass+vehicle_tonnage
其他的就不变
这里id涉及业务,我就屏蔽了
做法
(一)方法一:这里用到decode(sign)
语句来查询了
修改字段查询方式:gross_mass
修改为:
DECODE(SIGN(gross_mass-vehicle_tonnage),-1,
gross_mass+vehicle_tonnage,1,
gross_mass,0,gross_mass) AS gross_mass
示例说明:
decode(sign(a-b),1,值1,-1,值2,0,值3)
如果a-b大于0则可以赋值1
给a
如果a-b小于0则可以赋值2
给a
如果a-b等于0则可以赋值3
给a
(二)方法二
最总结果