SQL Server求和函数给出正确求和值的x2

时间:2016-10-02 17:23:14

标签: sql-server sql-server-2008-r2

以下查询给出了400个totalDeduction值,而tblDeduction表只有1个扣除值为200

select 
    sum(d.amount), o.scale 
from 
    tblDeduction d, tblScale o 
where 
    d.ScaleID = o.ID 
group by 
    o.Scale

当我使用相同的逻辑编写单独的查询时,它返回正确的ans。

{{1}}

请检查

由于

1 个答案:

答案 0 :(得分:0)

两个查询不同,因为分组条件不同。 可能缺少导致分组不准确的情况。

我从第一个查询中猜到表之间的关系如下:

 tblEmployee e 
    |--> tblEmpOfficialDetail o
           |-->tblDeduction  d
           |-->tblScale      s
           |-->tblAllowance  a

尝试下一个查询。它是相同的,但写作连接条件,以确保从连接表之间的关系。

    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
    join  tblEmpOfficialDetail o on e.EmpID=o.EmpID
    join tblDeduction d  on o.ScaleID=d.ScaleID 
    join tblScale s on s.ID=o.ScaleID
    join tblAllowance a on a.ScaleID = o.ScaleID
    group by e.EmpID, e.FName, e.LName, o.HireDate, o.BasicPay, s.Scale