需求使用when case then end进行收费明细的统计计算盈亏
已知表jsmx,列总费用(ZFY),统筹基金支出(TCZC),盈亏金额(YKJE),是否盈亏(ISYORK:1盈利;0亏损)
嵌套使用whencasethen不生效
SELECT ID, ZFY,
( when case ROUND((ZFY-TCZC),2) < 0 then ROUND((ZFY-TCZC),2)*(-1) else ROUND((ZFY-TCZC),2) end ) YKJE,
when case YKJE < 0 then 0 else 1 end ISYORK
from jsmx
-- 此种写法YKJE使用过一次whencasethen,因此在isyork中whencasethen调用它时,嵌套使用不生效
正确写法应为
SELECT ID, ZFY,TCZC
( when case ROUND((ZFY-TCZC),2) < 0 then ROUND((ZFY-TCZC),2)*(-1) else ROUND((ZFY-TCZC),2) end ) YKJE,
when case ROUND((ZFY-TCZC),2) < 0 then 0 else 1 end ISYORK
from jsmx