case when...then...else...end的作用和decode作用相同,废话不多说,先举一个例子:
select
SUM(CASE WHEN ','||R1.CONCLUSION||',' LIKE '%,1,%' THEN 1 else 0 END) CONCLUSION_1,
SUM(CASE WHEN ','||R1.CONCLUSION||',' LIKE '%,2,%' THEN 1 else 0 END) CONCLUSION_2
from TASK_RECORD R1
上面的字段中TASK_RECORD表中字段 CONCLUSION的存储是以1,2,3...,n这样的方式存储,先在我要统计含有1,2...,n每一个有多少条记录。因为decode方法中判断的值必须是一个确定的值,所以不能使用此方法来解决,想要解决此问题必须使用模糊查询,只要有该标号的值就加1(+1)的方式;
总结:此方法比起decode要复杂,并且没有那么美观,不同的是该方法支持用判断条件和模糊查询等。