当前位置: 代码迷 >> Sql Server >> sql,疑难有关问题!100分
  详细解决方案

sql,疑难有关问题!100分

热度:11   发布时间:2016-04-24 09:55:30.0
sql高手进,疑难问题!100分
环境: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 设备名称,'
  相关解决方案