欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从永远到永远-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)函数照常写.

从永远到永远-ORACLE种CASE WHEN的使用