+ -
当前位置:首页 → 问答吧 → oracle视图中sum函数的问题

oracle视图中sum函数的问题

时间:2011-09-15

来源:互联网

create or replace view v_ht_basebudget4fee_mk as
select
/******************************************************************************
  NAME: TIA
  PURPOSE:  

  REVISIONS:
  Ver Date Author Description
  --------- ---------- --------------- ------------------------------------
  1.0 2010 周凌  

  NOTES:

  概算的 每一明细级 
   
  的 四个费用项 合计  
  包括 初始的 和 实际进度和出库得  
******************************************************************************/ 
A.id,
A.itemcode,A.itemname,

-- 建筑  
sum 

case when B.feetypeid like '1.2.2%' then  
  B.passfee 
  else 
  0 
end 
) JZ_sumpassfee ,

sum 

case when C.feetypeid like '1.2.2%' then  
  C.FMONEY 
  else 
  0 
end 
) JZ_sumFMONEY ,


-- 安装 
sum 

case when B.feetypeid like '1.2.4%' then  
  B.passfee 
  else 
  0 
end 
) AZ_sumpassfee ,

sum 

case when C.feetypeid like '1.2.4%' then  
  C.FMONEY 
  else 
  0 
end 
) AZ_sumFMONEY ,

-- 设 备 
sum 

case when b.feetypeid like '1.2.3%' then  
  b.passfee 
  else 
  0 
end 
) SB_sumpassfee ,

sum 

case when C.feetypeid like '1.2.3%' then  
  C.FMONEY 
  else 
  0 
end 
) SB_sumFMONEY ,

-- 其 他 
sum 

case when B.feetypeid like '1.2.5%' then  
  B.passfee 
  else 
  0 
end 
) QT_sumpassfee ,

sum 

case when C.feetypeid like '1.2.5%' then  
  C.FMONEY 
  else 
  0 
end 
) QT_sumFMONEY ,


-- 矿建
sum 

case when B.feetypeid like '1.2.1%' then  
  B.passfee 
  else 
  0 
end 
) KJ_sumpassfee ,

sum 

case when C.feetypeid like '1.2.1%' then  
  C.FMONEY 
  else 
  0 
end 
) KJ_sumFMONEY  



 
from  
(select * from HT_BUDGETITEM where to_number(id)>910 ) A,
HT_BGTFEEINI B ,

-- 实际进度和出库方向 以及 归集方向 合并  
(
  select 
  T2.BUDGETID,
  T2.FEETYPEID ,
  T1.FILEFEE FMONEY,T2.sno 
  from  
  BID_FTEMPOSUB T1,
  HT_DTBGTFEETO T2 
  where T1.TOID = T2.sno(+)  
  union all  
   
  -- 出库  
  select 
  T2.budgetid,
   
  T2.feetypeid,
   
  -- 动产 不含税 
  case when T2.ISRASSET ='1' then nvl(T1.out_money,0) 
  -- 不动产 含含税 的金额 
  when T2.ISRASSET ='2' then Nvl(T1.out_money,0) + nvl(T1.outratem,0)  
  end outfee ,
  T1.sno  
  from 
  WZ_MATOUT_SUB T1 ,
  (
  select 
  T2.ISRASSET,
  T1.* from 
  WZ_MATOUT T1,
  HT_BUDGETITEM T2 
  where T1.BUDGETID = T2.ITEMCODE(+)  
  ) T2 
  where 
  T1.pid = T2.INSTANCEID(+)  
   
   
  union all 
  --归集 
  select  
  dgtcode ,FEETYPEID,amount ,sno  
  from PA_COSTABTIONDTL 
  union all 
  --分摊 
  select BUDGETID,FEETYPEID,DIVIDFEE,sno from 
  HT_DIVIDERUN_SUB 
   
   
   
) C

 
where 
A.itemcode = b.BUDGETID(+) AND  
A.itemcode = C.BUDGETID(+)  

group by A.id,A.itemcode,A.itemname 
请问这个oracle视图里面的有sum函数请问高手像这样的能否详解一下什么意思啊sum 

case when B.feetypeid like '1.2.1%' then  
  B.passfee 
  else 
  0 
end 
) KJ_sumpassfee ,

作者: zhang__wenlong   发布时间: 2011-09-15

-- 矿建
sum  
(  
case when B.feetypeid like '1.2.1%' then  
  B.passfee  
else  
  0  
end  
) KJ_sumpassfee ,

如果字段B.feetypeid 满足 like '1.2.1%'时,则KJ_sumpassfee 的值是字段B.passfee值的和,也就是SUM(B.passfee);
否则,KJ_sumpassfee 的值就是0

作者: yixilan   发布时间: 2011-09-15

兰兰,太强大了,那么长也有耐心看下去。

作者: liuhaiyang5300   发布时间: 2011-09-15

引用 2 楼 liuhaiyang5300 的回复:
兰兰,太强大了,那么长也有耐心看下去。

哪里哪里,其实,你看楼主最后问的那块,只是一小部分:)

作者: yixilan   发布时间: 2011-09-15

引用 1 楼 yixilan 的回复:

-- 矿建
sum
(
case when B.feetypeid like '1.2.1%' then
B.passfee
else
0
end
) KJ_sumpassfee ,

如果字段B.feetypeid 满足 like '1.2.1%'时,则KJ_sumpassfee 的值是字段B.passfee值的和,也就是SUM(B.p……

其实你可以理解为:对feetypeid like '1.2.1%'的passfee字段进行合计

作者: lxyzxq2008   发布时间: 2011-09-15