zoukankan      html  css  js  c++  java
  • [Oracle整理]CASEEND

    说明:本内容是工作用到的知识点整理,来自工作中和网络。
    代码于Oracle9上测试。

    作用:

    1可用来进行数据资料行转列的功能

    2可用来对数据进行判断,类似decode,但CASE语句在处理范围条件的时候会显得非常灵活。如果只是需要匹配少量数值时,用Decode更为简洁

    3CASE开头,以END结尾 ,  分支中WHEN 后跟条件,THEN为显示结果 ELSE 为除此之外的默认情况,类似于高级语言程序中switch casedefault,可以不加

    语法:

    Case when  expression1 then result1

         when  expression2 then  result2

         ……

         Else  result

    END

    例子

    产品每天的销售额

    clip_image002

    制作销售额报表,通常习惯将日期作为表格的标题。

    clip_image004

    如何实现?

    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 注意,这里的ifthenelse 都可以是函数计算表达式(加,减,乘,除)。

    例子:

    1)使用字段

    SELECT decode(category_name,'01','Apple','Pear') FROM xx_test1

    2)使用计算表达式——加,减,乘,除

    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;

    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)CaseEndsql/92标准的一部分,哪儿都能用,也就是说移植性更强.

    4)DecodeOracle专有的。

    5)Decode方便,简洁;CaseEnd灵活。

    应用场景

    1)        功能比较简单时,Decode。因为方便,简洁。

    2)        要用表达式的都是CaseEnd

    3)        Decode满足不了时就用CaseEnd

  • 相关阅读:
    Save a bricked Samsung Note 3 and do extraction
    Use EnCase to acquire data from a smartphone
    Android手机与计算机间的”信任关系”
    iPhone 6 (iOS 9.2) extractiion failed by XRY
    No deleted LINE chat messages recovered on iOS 9.1 after UFED extraction
    Find out who the “mole” is?
    Recover deleted pictures in iOS 9
    工厂模式
    教练和运动员案例
    本地网络共享
  • 原文地址:https://www.cnblogs.com/htht66/p/2330962.html
Copyright © 2011-2022 走看看