求帮助写一个ORACLE的CASEWHEN

现在有一个列叫销售组

1.when 开头三个字母是SGA的 如果=SGA-BMS 那就=SGA-BMS,如果=SGA-W&NP那就=SGA-W&NP,其他SGA开头的都是SGA-Phone

2.when SGB开头的全是SGB

3.WHEN 如果开头是SGC或BUD或BUE或SGD就都=SGC

4.WHEN 开头是汽车就是汽车

5.WHEN 开始投半导体就是半导体

6.WHEN乔峰就是乔峰

7.剩下就是其他

如果我group by 的话 怎么跟在后面 我自己写一直ORA-00979

FineReport callie 发布于 2022-7-25 14:37
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
lxy2Lv6中级互助
发布于2022-7-25 14:43

case when 销售组 like 'SGA%' THEN CASE WHEN 销售组='SGA-BMS' THEN 'SGA-BMS' 

                                       WHEN 销售组='SGA-W&NP' THEN 'SGA-W&NP'

   ELSE 'SGA-Phone'

   END

WHEN 销售组 like 'SGB%' THEN 'SGB'

WHEN 销售组 like 'SGC%' OR 销售组 like 'BUD%' OR 销售组 like 'BUE%' OR 销售组 like 'SGD%'  THEN 'SGC'

WHEN 销售组 like '汽车%' THEN '汽车'

WHEN 销售组 like '半导体%' THEN '半导体'

WHEN 销售组 like '乔峰%' THEN '乔峰'

else '其他'

end as ttype

group by 后面为

case when 销售组 like 'SGA%' THEN CASE WHEN 销售组='SGA-BMS' THEN 'SGA-BMS' 

                                       WHEN 销售组='SGA-W&NP' THEN 'SGA-W&NP'

   ELSE 'SGA-Phone'

   END

WHEN 销售组 like 'SGB%' THEN 'SGB'

WHEN 销售组 like 'SGC%' OR 销售组 like 'BUD%' OR 销售组 like 'BUE%' OR 销售组 like 'SGD%'  THEN 'SGC'

WHEN 销售组 like '汽车%' THEN '汽车'

WHEN 销售组 like '半导体%' THEN '半导体'

WHEN 销售组 like '乔峰%' THEN '乔峰'

else '其他'

end

最佳回答
0
CD20160914Lv8专家互助
发布于2022-7-25 14:40

要多套一个子查询就行了。你先把case when 全判断出来。然后子查询再group by

select * from (你原来的查询语句,,case when的判断那一些)  t group by 销售组

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-7-25 14:44

SELECT (CASE WHEN 销售组 LIKE 'SGA-BMS%' OR 销售组 LIKE 'SGA-W&NP%' THEN 销售组 

WHEN 销售组 LIKE 'SGA%' THEN 'SGA-Phone'

WHEN 销售组 LIKE 'SGB%' THEN 'SGB'

WHEN 销售组 LIKE 'SGC%' OR 销售组 LIKE 'BUE%' OR 销售组 LIKE 'SGD%'THEN 'SGC'

WHEN 销售组 LIKE '汽车%' THEN '汽车'

WHEN 销售组 LIKE '半导体%' THEN '半导体'

WHEN 销售组 LIKE '乔峰%' THEN '乔峰'

ELSE '其他' END

) AS FL FROM ............ 

  • 3关注人数
  • 273浏览人数
  • 最后回答于:2022-7-25 14:44
    请选择关闭问题的原因
    确定 取消
    返回顶部