读书人

第三列等于前两列的计算结果但前两列

发布时间: 2013-11-20 12:46:02 作者: rapoo

第三列等于前两列的计算结果,但前两列也是子查询怎么做
比如

SELECT 

(SELECT SUM(SFO.QTY) --预算数
FROM SN_FACT_ORDER_COST SFO, SN_DIM_PART SDPI
WHERE SFO.CHANGE_TYPE = 'TYPE_DD' --订单,采购) 2012年申请


(SELECT SUM(SFO.QTY) --预算数
FROM SN_FACT_ORDER_COST SFO, SN_DIM_PART SDPI
WHERE SFO.CHANGE_TYPE = 'TYPE_FF' --发放)2012年发放
FROM FACT_ORDER

怎么再加第三列,使得第三列等于第一列除以第二列的比例值?
烦劳各位 oracle 计算
[解决办法]
看你的语句不需要那么多子查询啊
select qty1,qty2,qty1/qty2 from(select 
sum(case when SFO.CHANGE_TYPE='TYPE_DD' then SFO.QTY END ) as qty1,
sum(case when SFO.CHANGE_TYPE ='TYPE_FF' then SFO.QTY END ) as qty2
from SN_FACT_ORDER_COST SFO)

[解决办法]
如果不想要子查询 就直接写出来好了


select sum(decode(SFO.CHANGE_TYPE,'TYPE_DD',SFO.QTY,0)) "采购"
sum(decode(SFO.CHANGE_TYPE,'TYPE_FF',SFO.QTY,0)) "发放"
round((sum(decode(SFO.CHANGE_TYPE,'TYPE_DD',SFO.QTY,0))/
sum(decode(SFO.CHANGE_TYPE,'TYPE_FF',SFO.QTY,0)),2) "比例"
FROM SN_FACT_ORDER_COST SFO, SN_DIM_PART SDPI

读书人网 >oracle

热点推荐