select t.pk_group as pk_group,
       t.pk_org as pk_org,
       t.pk_currtype as corigcurrencyid,
       t.pk_order as pk_order,
SUM(case  
  WHEN orderstate=3 and ordertype!=4 THEN money 
  WHEN ordertype!=4 THEN money END) AS A
from  table  t
group by t.pk_order,
          t.pk_group,
          t.pk_org

解决方案 »

  1.   

    t.pk_currtype 应该加到group by中,不然要报错
      

  2.   

    恩,同意楼上意见,也可以使用max
    select t.pk_group as pk_group,
           t.pk_org as pk_org,
           max(t.pk_currtype) as corigcurrencyid,
           t.pk_order as pk_order,
    SUM(case  
      WHEN orderstate=3 and ordertype!=4 THEN money 
      WHEN ordertype!=4 THEN money END) AS A
    from  table  t
    group by t.pk_order,
              t.pk_group,
              t.pk_org
      

  3.   

      多谢啦 这样就好了  select t.pk_group as pk_group,
           t.pk_org as pk_org,
           
           t.pk_order as pk_order,
    SUM(case  
      WHEN ORDERSTATUS=3 and T.ordertype!=4 THEN money   END)AS AA,
     
    SUM( case WHEN ORDERTYPE=4 THEN money  END)AS BB
    from  table1  t
    group by t.pk_order,
              t.pk_group,
              t.pk_org
      

  4.   

    ordertype !=4 不是包含了 orderstate  =3  并且 ordertype !=4 吗?
      

  5.   

    是笔误吧
    第二个应该是ORDERTYPE=4
      

  6.   

    sum 拿到外面。group by 的列表和 select 中的未使用聚合函数的列,保持一致。
      

  7.   

    select t.pk_group as pk_group,
           t.pk_org as pk_org,
           t.pk_order as pk_order,
    SUM(case  
      WHEN orderstate=3 and ordertype!=4 THEN money 
      WHEN ordertype=4 THEN money END) AS CNT
    from  table  t
    group by t.pk_order,
              t.pk_group,
              t.pk_org