sap sql 中case 另一种使用方法

 

select   year(t1.docdate) as iyear, Month(t1.docdate) as imonth, t1.docentry,'应收贷项凭证' type1, t1.docdate,
                 t0.itemcode, t0.dscription, t0.quantity ,--isnull(t2.avgprice,0) avgprice
  case
  when year(odln.docdate)=2010 and month(odln.docdate)=7
  then (select isnull(AvgPrice,0) as AvgPrice from [t_ZKMCAVGCOST] where iYear=2010 and iMonth=8 and ItemCode=t0.ItemCode)
  else isnull(t2.avgprice,0)
  end as avgprice
    from rin1    t0 inner join orin t1 on t0.docentry = t1.docentry
--                    
                       inner join inv1      on t0.baseentry = inv1.docentry and t0.baseline =inv1.lineNum      --应收发票子表
                       inner join oinv      on oinv.docentry = inv1.docentry                                   --应收发票
                       inner join dln1      on inv1.baseEntry = dln1.docentry and inv1.Baseline = dln1.lineNum --交货子表
                       inner join odln      on dln1.docentry = odln.docentry
                       inner join oitm      on  oitm.itemcode =t0.itemcode
                       left  join [t_ZKMCAVGCOST] t2  on t0.itemcode=t2.itemcode 
                and  t2.iyear=  year(odln.docdate) and t2.imonth=month(odln.docdate)
       where   year(t1.docdate) ='2010'  and month(t1.docdate) ='9'            
               and  month(odln.docdate)<>month(t1.docdate) and ItmsGrpCod  =101  --不是本月发货的

其中:


  t2.iyear=  year(odln.docdate) and t2.imonth=month(odln.docdate)

 

在追贷项凭证的时候 追到发货月是 7月份 , 而 ZKMCAVGCOST表的内容是从8月份开始的没有7月份的值, 有7月份的值的时候看成8月份的值。

从而写了这个:

  case
  when year(odln.docdate)=2010 and month(odln.docdate)=7
  then (select isnull(AvgPrice,0) as AvgPrice from [t_ZKMCAVGCOST] where iYear=2010 and iMonth=8 and ItemCode=t0.ItemCode)
  else isnull(t2.avgprice,0)
  end as avgprice

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值