从永远到永远-ORACLE种CASE WHEN的使用
程序员文章站
2024-03-12 20:31:56
...
需求:使NVL(sum(pe.PLAN_MONTH_AMOUNT), 0)、NVL(sum(pe.PERSONAL_RECEIVE),0)必须是0.
pe.PLAN_YEAR的值是null。
select mu.MARKET_GROUP_ID, mu.USER_ID,mu.USER_NAME,mu.USER_NICK_NAME,nvl(pe.PERSONAL_TOTAL,0) PERSONAL_TOTAL,case when NVL(sum(pe.PLAN_MONTH_AMOUNT), 0)!=0 then 0 else 0 end TOTAL, case when NVL(sum(pe.PERSONAL_RECEIVE),0)!=0 then 0 else 0 end PERSONAL_RECEIVE, case when pe.PLAN_YEAR is not null then 0 else null end PLAN_YEAR
from HZ_SALES_PLAN_PERSONAL pe
right join
HZ_SALES_MARKET_USER mu on pe.USER_ID=mu.USER_ID
where mu.MARKET_GROUP_ID='3f6925f0-fae4-407a-b7b5-870cb0079988' --补充团队计划id
group by mu.MARKET_GROUP_ID, mu.USER_ID,mu.user_name,mu.USER_NICK_NAME,pe.PERSONAL_TOTAL,pe.PLAN_YEAR
1)CASE WHEN 连起来写:case when pe.PLAN_YEAR is not null
(相当于if条件判断,意为 当 pe.PLAN_YEAR字段的值不是null时)
2) THEN后边跟WHEN中条件下赋的值。then 0
( pe.PLAN_YEAR字段的值不是null时,给这个字段赋值为0)
3)中间可以跟多个WHEN,类似1)的条件。
4)ELSE与THEN类似:else null
(意为:否则就是null)。其实如果用不到,都可以不写。
5)END:固定写法,结束CASE WHEN用法。
6)别名放在END后边。
7)函数照常写.
上一篇: lombok使用及常用注解