做电影网站有什么流媒体好,国外设计师,王业侨,电商网站什么要求高说明#xff1a;本内容是工作用到的知识点整理#xff0c;来自工作中和网络。 代码于Oracle9上测试。 作用: 1可用来进行数据资料行转列的功能 2可用来对数据进行判断#xff0c;类似decode#xff0c;但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量… 说明本内容是工作用到的知识点整理来自工作中和网络。 代码于Oracle9上测试。 作用: 1可用来进行数据资料行转列的功能 2可用来对数据进行判断类似decode但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量数值时用Decode更为简洁 3以CASE开头以END结尾 , 分支中WHEN 后跟条件THEN为显示结果 ELSE 为除此之外的默认情况类似于高级语言程序中switch case的default可以不加 语法: Case when expression1 then result1 when expression2 then result2 …… Else result END 例子 产品每天的销售额 制作销售额报表通常习惯将日期作为表格的标题。 如何实现 SELECT product_name, category_name, SUM((CASE WHEN to_char(SALE_date, yyyy/mm/dd) 2011/10/01 THEN sales ELSE 0 END)) 10/01, SUM((CASE WHEN to_char(SALE_date, yyyy/mm/dd) 2011/10/02 THEN sales ELSE 0 END)) 10/02, SUM((CASE WHEN to_char(SALE_date, yyyy/mm/dd) 2011/10/03 THEN sales ELSE 0 END)) 10/03 FROM xx_test1 GROUP BY product_name,category_name DECODE 作用 1 进行数据资料行转列 语法 DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) A Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。 B 当每个value值被测试如果value的值为if1Decode 函数的结果是then1如果value等于if2Decode函数结果是then2等等。 C 事实上可以给出多个if/then 配对。 D 注意这里的if、then及else 都可以是函数或计算表达式加减乘除。 例子 1)使用字段 SELECT decode(category_name,01,Apple,Pear) FROM xx_test1 2)使用计算表达式——加减乘除 SELECT decode(11,2,Apple,Pear) FROM xx_test1; SELECT decode(1-1,2,Apple,Pear) FROM xx_test1; SELECT decode(1*1,2,Apple,Pear) FROM xx_test1; SELECT decode(1/1,2,Apple,Pear) FROM xx_test1; 3)使用函数 SELECT decode(to_char(sysdate,mon),nov,冬月,dec,腊月,to_char(sysdate,mon)) FROM dual 比较 相同 进行数据资料行转列 不同 1)CaseEnd可以使用所有的表达式Decode只是可用算术表达式不可用逻辑表达式 !。 2)CaseEnd可以用多个不同的字段来进行判断Decode只可用一个字段。 3)CaseEnd是sql/92标准的一部分,哪儿都能用,也就是说移植性更强. 4)Decode是Oracle专有的。 5)用Decode方便,简洁CaseEnd灵活。 应用场景 1) 功能比较简单时,用Decode。因为方便,简洁。 2) 要用表达式的都是CaseEnd。 3) 当Decode满足不了时就用CaseEnd。 转载于:https://www.cnblogs.com/htht66/archive/2012/01/29/2330962.html