Sql 筛选条件时未添加总和的问题

Sql 筛选条件时未添加总和的问题,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图使用SUM为每个单独的部分基于一个字段添加3个记录集的数据,但它不会求和,它只会单独显示每个记录的结果 我尝试过修改查询,使其仅限于一个表,但运气不佳。我尝试在WHERE和have中使用这些标准,但没有任何更改。如果我删除了这些条件,那么它将正确地求和 SELECT dbo.tbl_Parts.Number, Sum(dbo.tbl_Msmt_Data.Result) AS Result, dbo.tbl_Parts.Parts_ID FROM dbo.tbl_Msmt_Data I

我试图使用SUM为每个单独的部分基于一个字段添加3个记录集的数据,但它不会求和,它只会单独显示每个记录的结果

我尝试过修改查询,使其仅限于一个表,但运气不佳。我尝试在WHERE和have中使用这些标准,但没有任何更改。如果我删除了这些条件,那么它将正确地求和

SELECT dbo.tbl_Parts.Number, 
Sum(dbo.tbl_Msmt_Data.Result) AS Result, 
dbo.tbl_Parts.Parts_ID

FROM dbo.tbl_Msmt_Data INNER JOIN dbo.tbl_Parts ON dbo.tbl_Msmt_Data.Part = dbo.tbl_Parts.Parts_ID

WHERE ((dbo.tbl_Msmt_Data.Time_Completed)>GetDate()-60)

GROUP BY dbo.tbl_Parts.Number, dbo.tbl_Parts.Mold,dbo.tbl_Parts.Parts_ID, dbo.tbl_Msmt_Data.Msmt_Spec

HAVING (((dbo.tbl_Msmt_Data.Msmt_Spec)=4000 Or (dbo.tbl_Msmt_Data.Msmt_Spec)=4001 Or (dbo.tbl_Msmt_Data.Msmt_Spec)=4514))

ORDER BY dbo.tbl_Parts.Number;



What I want the output to read is: 
Number, Result 
1723      590
1724      574

But what I'm getting is: 
Number, Result 
1723      120
1723      470
1724      112
1724        0
1724      462

对于其他零件号,以相同的方式出现相同的图案

您将获得更多的行,因为您在选择列表中有额外的列,并且您正在按太多的列进行分组。此外,您还应该学习如何使用别名。它将这堵文本墙变成了一个非常简短且易于破译的查询。我还使用dateadd来计算天数,而不是速记。你可能要小心,因为如果你想知道日期,它就不准确了

由于没有样本数据,我猜,但这应该是非常接近

SELECT p.Number, 
    Sum(d.Result) AS Result 
FROM dbo.tbl_Msmt_Data d
INNER JOIN dbo.tbl_Parts  p ON d.Part = p.Parts_ID
WHERE d.Time_Completed > dateadd(day, -60, GetDate())
GROUP BY p.Number
HAVING d.Msmt_Spec in (4000, 4001, 4514)
ORDER BY p.Number;

由于“选择”列表中有额外的列,并且按太多的列进行分组,因此获得了更多的行。此外,您还应该学习如何使用别名。它将这堵文本墙变成了一个非常简短且易于破译的查询。我还使用dateadd来计算天数,而不是速记。你可能要小心,因为如果你想知道日期,它就不准确了

由于没有样本数据,我猜,但这应该是非常接近

SELECT p.Number, 
    Sum(d.Result) AS Result 
FROM dbo.tbl_Msmt_Data d
INNER JOIN dbo.tbl_Parts  p ON d.Part = p.Parts_ID
WHERE d.Time_Completed > dateadd(day, -60, GetDate())
GROUP BY p.Number
HAVING d.Msmt_Spec in (4000, 4001, 4514)
ORDER BY p.Number;

仅按dbo.tbl_Parts.Number分组,而不是:

GROUP BY dbo.tbl_Parts.Number, dbo.tbl_Parts.Mold, 
dbo.tbl_Parts.Parts_ID, dbo.tbl_Msmt_Data.Msmt_Spec

仅按dbo.tbl_Parts.Number分组,而不是:

GROUP BY dbo.tbl_Parts.Number, dbo.tbl_Parts.Mold, 
dbo.tbl_Parts.Parts_ID, dbo.tbl_Msmt_Data.Msmt_Spec