Sql 筛选条件时未添加总和的问题
我试图使用SUM为每个单独的部分基于一个字段添加3个记录集的数据,但它不会求和,它只会单独显示每个记录的结果 我尝试过修改查询,使其仅限于一个表,但运气不佳。我尝试在WHERE和have中使用这些标准,但没有任何更改。如果我删除了这些条件,那么它将正确地求和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
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