0
以下查询这给400值totalDeduction的同时tblDeduction表仅具有1扣除与值的X2 200SQL Server的总和函数给出正确的总和值
select
e.EmpID, concat(e.FName, ' ', e.LName) as Name,
o.HireDate, o.BasicPay, s.Scale,
SUM(a.amount) as totalAllowance,
SUM(d.Amount) as totalDeduction
from
tblEmployee e, tblEmpOfficialDetail o, tblScale s, tblAllowance a, tblDeduction d
where
e.EmpID = o.EmpID and
o.ScaleID = s.ID and
o.ScaleID = a.ScaleID and
o.ScaleID = d.ScaleID
group by
e.EmpID, e.FName, e.LName, o.HireDate, o.BasicPay, s.Scale
当我使用相同的逻辑写一个单独的查询它会返回正确的答案。
select
sum(d.amount), o.scale
from
tblDeduction d, tblScale o
where
d.ScaleID = o.ID
group by
o.Scale
请检查,因为分组条件不同,它
感谢
我敢打赌,您的加入条件不是1:1,请删除群组以查看发生了什么。顺便说一下,建议使用显式连接语法,而不是使用92之前的隐式语法。 – HoneyBadger
SO用于提问,不提交代码供其他人修复 –
@HoneyBadger“连接条件不是1:1”是什么意思?顺便说一句,当我删除组by子句它给聚合函数错误 – Ridzi