使用groupby和sum咋没有求和,AsnewWeight是想求一个月的重量求和,咋也显示为空

select convert(char(10),OperateDt,120) as OperateDt,FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,sum(WeightDbl1) as newWeightDbl1,sum(WeightDbl2) as newWeightDbl2,(WeightDbl1+WeightDbl2) as AsnewWeightDbl, FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch
from View_YRemoveRecord where 1=1 group by OperateDt,FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch

图片说明

//也可以原纪录和汇总值多重组合,加载所有记录,每条记录都有汇总字段值,没有主键id,只能多条件匹配了
select 
convert(char(10),a.OperateDt,120) as OperateDt,
a.FurnaceNoVch,
a.SiliconLenthVch,
a.CateNameVch,
a.size,
a.WeightDbl1,
a.WeightDbl2,
(case a.WeightDbl1 when null then 0 else a.WeightDbl1 end)+(case a.WeightDbl2 when null then 0 else a.WeightDbl2 end) AsnewWeightDbl,
b.newWeightDbl1,
b.newWeightDbl2, 
a.FurnaceNoVch2,
a.FallDownName,
a.MasterNameVch,
a.MasterCodeVch 
from View_YRemoveRecord a

left join
(select convert(char(10),OperateDt,120) as OperateDt,
FurnaceNoVch,
SiliconLenthVch,
CateNameVch,
size,
sum(case WeightDbl1 when null then 0 else WeightDbl1 end) as newWeightDbl1,
sum(case WeightDbl2 when null then 0 else WeightDbl2 end) as newWeightDbl2, 
FurnaceNoVch2,
FallDownName,
MasterNameVch,
MasterCodeVch 
from View_YRemoveRecord 
where 1=1 
group by 
convert(char(10),OperateDt,120),
FurnaceNoVch,
SiliconLenthVch,
CateNameVch,
size,
FurnaceNoVch2,
FallDownName,
MasterNameVch,
MasterCodeVch)b

on convert(char(10),a.OperateDt,120)=b.OperateDt
and a.FurnaceNoVch=b.FurnaceNoVch
and a.SiliconLenthVch=b.SiliconLenthVch
and a.CateNameVch=b.CateNameVch
and a.size=b.size
and a.FurnaceNoVch2=b.FurnaceNoVch2
and a.FallDownName=b.FallDownName
and a.MasterNameVch=b.MasterNameVch
and a.MasterCodeVch=b.MasterCodeVch

使用groupby和sum为什么没有求和,AsnewWeightDbl我这是是想求一个月的重量求和,为什么也显示为空 的,newWeightDbl1是想求WeightDbl1的和,newWeightDbl2是想求newWeightDbl2的和,

sql语句先执行group 在执行sum,你的group分的太细了几乎每条一组,所以使用sum几乎没效果,AsnewWeight 这个可以使用子查询

原因是sum公式累计计算的值是依据group by 后面跟的这些字段值完全相同的记录进行累计的,
除非你确group by后面这些字段值全部相同的记录不止一条,否则就是它本身记录的值,
还有就是 group by OperateDt的值依旧会按照他的原字段值进行比较,不会按照你的convert(char(10),OperateDt,120)处理后的值,
如果你想按处理后的字段值进行分组,可以group by convert(char(10),OperateDt,120),...

CREATE VIEW [dbo].[View_YRemoveRecord]
AS
SELECT a.RecordIdVch, a.TaskIdVch,d.SiliconLenthVch, a.BoxBarVch, a.GrossWeightDbl, a.NetWeightDbl,
case WorkShopVch when 'B1' then NetWeightDbl end WeightDbl1,
case WorkShopVch when 'B2' then NetWeightDbl end WeightDbl2,
a.FurnaceNoVch, a.ResistanceDbl, a.GrowthTimeDbl ,f.CateNameVch, g.CateNameVch as size,a.FurnaceNoVch as FurnaceNoVch2,
CASE a.IsFallDownVch WHEN 'Y' THEN '是' ELSE '否' END AS FallDownName,a.OperaterVch,a.OperateDt,
CASE a.IsCleaningVch WHEN 'Y' THEN '是' ELSE '否' END AS CleaningName,
a.CombinStateVch,
(SELECT COUNT(1) FROM YRemoveRelation b WHERE b.RecordIdVch=a.RecordIdVch) AS RelationNum,
c.MasterCodeVch,c.MasterNameVch,d.TaskNoVch,d.RealName,d.WorkShopIdVch,d.TOGNameVch,d.StateName,d.TaskStateVch,
e.DicNameVch 'CombinState'
FROM YRemoveRecord a
INNER JOIN dbo.View_YRemoveTask d ON a.TaskIdVch=d.TaskIdVch
INNER JOIN dbo.BMaster c ON a.MasterCodeVch=c.MasterCodeVch
INNER JOIN dbo.BDictionary e ON a.CombinStateVch=e.DicCodeVch AND e.UpCodeVch='BinType'
inner join BMasterCate f on a.SiliconTypeVch=f.CateCodeVch and f.CateTypeVch='CT07'
inner join BMasterCate g on a.SiliconTypeVch=g.CateCodeVch and g.CateTypeVch='CT02'

GO
这个是我创建视图的语句,里面RecordIdVch是主键

可以试试这样
select convert(char(10),OperateDt,120) as OperateDt,FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,sum(WeightDbl1) OVER( PARTITION BY OperateDt,FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch) as newWeightDbl1,sum(WeightDbl2) OVER( PARTITION BY OperateDt,FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch) as newWeightDbl2,(WeightDbl1+WeightDbl2) as AsnewWeightDbl, FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch
from View_YRemoveRecord where 1=1

//WeightDbl1,和WeightDbl2是不可能可sum()同时出现的,因为前者是分散记录,后者是汇总值,不可能匹配到一个表中,按下方查询再试一下
select convert(char(10),OperateDt,120) as OperateDt,
FurnaceNoVch,
SiliconLenthVch,
CateNameVch,
size,
sum(case WeightDbl1 when null then 0 else WeightDbl1 end) as newWeightDbl1,
sum(case WeightDbl2 when null then 0 else WeightDbl1 end) as newWeightDbl2, 
FurnaceNoVch2,
FallDownName,
MasterNameVch,
MasterCodeVch 
from View_YRemoveRecord 
where 1=1 
group by 
convert(char(10),OperateDt,120),
FurnaceNoVch,
SiliconLenthVch,
CateNameVch,
size,
FurnaceNoVch2,
FallDownName,
MasterNameVch,
MasterCodeVch

select convert(char(10),OperateDt,120),FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,sum(WeightDbl1) as newWeightDbl1,sum(WeightDbl2) as newWeightDbl2,
(select convert(char(10),OperateDt,120),sum(NetWeightDbl) from YRemoveRecord group by convert(char(10),OperateDt,120)) as AsnewWeightDbl,
FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch
from View_YRemoveRecord where 1=1
group by convert(char(10),OperateDt,120),FurnaceNoVch,SiliconLenthVch,CateNameVch,size,WeightDbl1,WeightDbl2,FurnaceNoVch2,FallDownName,MasterNameVch,MasterCodeVch
这个是我写的查询语句

图片说明图片说明

这是我的项目要求,这怎么改?