当前位置: 代码迷 >> Oracle管理 >> 在线求一条SQL语句 case when 的,该如何处理
  详细解决方案

在线求一条SQL语句 case when 的,该如何处理

热度:173   发布时间:2016-04-24 04:12:05.0
在线求一条SQL语句 case when 的
描述:  数据库字段

pk_group       pk_org        pk_order      orderstate       ordertype        money 

现在   需要 
************************************************************************************************
 当  orderstate  =3  并且 ordertype !=4  时,统计所有 money   之和 即 sum(money )
同时  
 当  ordertype !=4  时,统计所有 money   之和 即 sum(money )   
并且根据 pk_group       pk_org        pk_order   分组

*************************************************************************************************

我写的:

select t.pk_group as pk_group,
       t.pk_org as pk_org,
       t.pk_currtype as corigcurrencyid,
       t.pk_order as pk_order
case  
  WHEN orderstate  =3  and  ordertype !=4    THEN sum(money )   as A 

   WHEN   ordertype !=4    THEN sum(money )   as B

from  table  t
group by t.pk_order,
          t.pk_group,
          t.pk_org



求各位大神帮忙  修改一下  多谢
------解决思路----------------------
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

------解决思路----------------------
恩,同意楼上意见,也可以使用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

------解决思路----------------------
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
------解决思路----------------------
引用:
Quote: 引用:

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
  多谢啦 

这样就好了  

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


同意
  相关解决方案