环境:DB(数据库版本): Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
问题描述和想要结果:(简单描述)

请看图,我用的sql语句,group by with rollup(具体代码帖到最下面)
如果“派工状态”为预安排 ,则未回报数量为0(实际第一行未回报数量为2)(这个地方sql 用的case when)
这样以后就有问题了,小计,合计都不准确了,多加了2.小计应该为50,这是想要的结果。
告诉我思路,有例子也行!
代码如下(delphi描述):
ADOQuery1.SQL.Text := 'select case when grouping(dbo.MyView1.FName)=1 '
+' and grouping(dbo.MyView1.FNumber)=1 '
+' and grouping(dbo.MyView1.Expr4)=1 '
+' and grouping(dbo.MyView1.FStatus)=1 '
+' and grouping(dbo.MyView1.FModel)=1 '
+' and grouping(dbo.MyView1.Expr2)=1 '
+' and grouping(dbo.MyView1.FNote)=1 '
+' and grouping(dbo.MyView1.Expr1)=1 '
+' and grouping(dbo.MyView1.FICMOBillNo)=1 then ''合计'' else dbo.MyView1.FICMOBillNo end 生产任务单号,'
+'case when grouping(dbo.MyView1.FName)=0 '
+' and grouping(dbo.MyView1.FNumber)=1 '
+' and grouping(dbo.MyView1.Expr4)=1 '
+' and grouping(dbo.MyView1.FStatus)=1 '
+' and grouping(dbo.MyView1.FModel)=1 '
+' and grouping(dbo.MyView1.Expr2)=1 '
+' and grouping(dbo.MyView1.FNote)=1 '
+' and grouping(dbo.MyView1.Expr1)=1 '
+' and grouping(dbo.MyView1.FICMOBillNo)=1 then ''小计'' else dbo.MyView1.FModel end 规格型号,'
+'dbo.MyView1.FNote AS 任务优先顺序,'
+'dbo.MyView1.Expr2 as 工序名称,'
+'case when dbo.MyView1.FModel = ''小计'' then ''null'' else dbo.MyView1.FName end as 设备名称,'