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…把它去掉了。没有解决我的问题,但谢谢你的提醒。彼得·史密斯。。。不知道你的意思。