一个SQL语句的问题!
4个表中有3个是关于费用的,并且有货币类型代码(rateID)和汇率(rate)表:Code_Rate,如果3个关于费用的表的的费用乘以汇率(rate)后得出的费用的总和,我用了联合查询,想问一下有没有别的更简便的方法(比如:不用联合查询)!谢谢!
select sum(金额) from (select Sum(a.Factfee*c.Rate ) as 金额
from FY_Chargy a,FY_Translate b,Code_Rate c
where (a.TranslateID=b.TranslateID)
and (c.RateID=a.RateID)
Union
select Sum( -d.amount*c.Rate ) as 金额
from FY_Translate b,Code_Rate c ,FY_Payment d
where (d.TranslateID=b.TranslateID)
and (c.RateID=d.RateID)
Union
select Sum( -e.amount*c.Rate) as 金额
from FY_Translate b,Code_Rate c ,FY_withdraw e
where (e.TranslateID=b.TranslateID)
and (c.RateID=e.RateID )
问题点数:50、回复次数:3Top
1 楼zarge(鲨去来兮)回复于 2003-09-04 00:38:37 得分 25
Select (select Sum(a.Factfee*c.Rate ) as 金额
from FY_Chargy a,FY_Translate b,Code_Rate c
where (a.TranslateID=b.TranslateID)
and (c.RateID=a.RateID) )
+
(select Sum( -d.amount*c.Rate ) as 金额
from FY_Translate b,Code_Rate c ,FY_Payment d
where (d.TranslateID=b.TranslateID)
and (c.RateID=d.RateID))
+
(select Sum( -e.amount*c.Rate) as 金额
from FY_Translate b,Code_Rate c ,FY_withdraw e
where (e.TranslateID=b.TranslateID)
and (c.RateID=e.RateID ) )Top
2 楼waterw(water)回复于 2003-09-04 08:46:42 得分 25
Select D.金额*E.Rate
(
Select Sum(IsNull(A.Factfee,0))+Sum(-IsNull(B.Amount,0))+Sum(-IsNull(C.Amount,0)) As 金额,T.RateID
From TransLate T Left Outer Join FY_Translate A On T.TransLateID=A.TransLateID
Left Outer Join FY_Payment B On T.TransLateID=B.TransLateID
Left Outer Join FY_Withdraw C On T.TransLateID=C.TransLateID
Group By T.RateID
) D Inner Join Code_Rate E On D.RateID
Top
3 楼HarrySong(harry)回复于 2003-09-04 13:07:07 得分 0
补充一下:
表的字段:
1.FY_Translate 业务表
FY_translateID 业务编号.
2.Code_Rate 汇率表
RateID 汇率编号 Rate 汇率值
3.FY_Chargy 收费表
FY_TranslateID 业务编号,FactFee 收费金额,RateID 汇率编号
4.FY_PayMent 付费表
FY_TranslateID 业务编号,Amount 收费金额,RateID 汇率编号
5.FY_WithDraw 退费表
FY_TranslateID 业务编号,Amount 收费金额,RateID 汇率编号
我要汇总3个费用表的费用总和,条件是:
1:汇率编号和Code_Rate 相对应
2:3个费用表中的业务编号只要存在于 FY_Translate 中就行(不是FY_Translate中的业务编号在3个费用表中都存在)Top




