日期:2014-05-17  浏览次数:20495 次

急求,case when then和group by联合使用的问题
NoInSt_Amt=case 
                         when  a.IsClear=1 then 
                            0
                         else
                           (select sum(case  when m.Ac_Qty > 0 and m.Qty > m.Ac_Qty then
                                               (m.Fc_Tot / m.Qty) * (m.Qty - m.Ac_Qty)
                                         when m.Ac_Qty = 0 then
                                                m.Fc_Tot
                                         else 0
                                      end )
                               from PoOrdD m where a.OrderM_Id = m.OrderM_Id
                            )
                       end,

如代码所示:我在此查询中使用了case when then,现在问题是,我在后面使用group by时,由于when  a.IsClear=1 then这句没有在聚合函数中,所以会报错,但是IsClear字段为bit类型,无法使用聚合函数,因此不知道该怎么解决,求各位大神指教。还有一个问题就是,为什么a.OrderM_Id也会报错,这个只是在where条件中啊,我不想根据a.OrderM_Id去分组