Sql server TSQL:SUM不像我想象的那样工作

Sql server TSQL:SUM不像我想象的那样工作,sql-server,tsql,Sql Server,Tsql,我有以下疑问: SELECT a.Name, ISNULL(CAST(sum((b.qty * b.unit_rate)* b.Eng_RPQ )/100 AS DECIMAL(8,1)),0) AS [EngHours], SUM(BR.BlendedRate) FROM Activity_Details b INNER JOIN Activity c on b.activity_id = c.id INNER JOIN Project

我有以下疑问:

SELECT 
    a.Name,
    ISNULL(CAST(sum((b.qty * b.unit_rate)* b.Eng_RPQ )/100 AS DECIMAL(8,1)),0) AS [EngHours],
    SUM(BR.BlendedRate)
FROM 
    Activity_Details b
INNER JOIN 
    Activity c on b.activity_id = c.id
INNER JOIN 
    Project p on p.id = c.project_id
RIGHT OUTER JOIN 
    Discipline a on c.discipline_id = a.id
INNER JOIN 
    (SELECT 
         a.Name, c.id, 
         CAST(f.POH * (d.HourlyRate * (1-(r.Discount/100))/100) AS DECIMAL(8,2)) AS BlendedRate 
     FROM 
         Activity_Details b
     INNER JOIN 
         Activity c on b.activity_id = c.id
     INNER JOIN 
         Team f on f.activity_id = c.id
     INNER JOIN 
         SOF_Details d on d.id = f.sof_detail_id
     INNER JOIN 
         Project p on p.id = c.project_id
     INNER JOIN 
         Rate r on r.projectid = p.id
     INNER JOIN 
         Teammate_Type tt on tt.id = f.team_type_id
     RIGHT OUTER JOIN 
         Discipline a on c.discipline_id = a.id
     GROUP BY 
         a.Name, c.id, f.POH, d.HourlyRate, r.Discount) AS BR ON BR.id = c.id
GROUP BY 
    a.Name
ORDER BY 
    a.Name
这将产生:

Name            EngHours   BlendedRate
Architechtural  80.8       38.48
Architechtural  80.8       55.33
Architechtural  80.8       55.40
我想将此BlendedRate相加并取整,但如果我尝试将其相加(BR.BlendedRate),请选择并删除组中的BR.BlendedRate

我得到:

Name            EngHours    BlendedRate
Architechtural  242.3       895.26
我原以为BlendedRate等于149.21


知道我做错了什么吗?

由于声誉问题,无法发表评论。这是一个粗糙的解决方案,但您的代码返回的是重复的(似乎是6条)记录。代码应该在其他地方修复,但是如果没有样本数据,这是很困难的。同时,一个粗略的解决方案是在求和函数中添加一个不同的子句

SUM( DISTINCT BR.BlendedRate)

为什么不在您的内部查询中再添加一个外部的
SUM
groupby
,为什么您要按
a.Name、c.id、f.POH、d.HourlyRate、r.Discount
进行分组,您没有聚合任何内容。您能提供样本记录和预期输出吗?所以有一个很好的例子,vmachan…把它去掉了。没有解决我的问题,但谢谢你的提醒。彼得·史密斯。。。不知道你的意思。