• Oracle中统计符合某列条件的列总数


    最近在项目报表中需要一个查询语句,用来统计符合某一列条件的其它几列的个数

    比如有下面一个表结构:

      

     需要在列D后面增加一列,统计在列A不为空,并且列B、C、D不为空的个数

     经过自己试验,查找帮助,总算实现了上面的查询。

     首先讲几个函数的用法:

     NULL:指的是空值,或者非法值。
     NVL (expr1, expr2)

     参数说明:如果expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
     NVL2 (expr1, expr2, expr3)

     参数说明:如果expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
     NULLIF (expr1, expr2)

     参数说明:如果相等返回NULL,不等返回expr1

     下面是本人通过两种方法实现的结果

     方法一:

    代码
     1 Select a,
     2        b,
     3        c,
     4        d,
     5        Case
     6          When a Is Not Null Then
     7           Nvl2(b, 1,0+ Nvl2(c, 1,0+ Nvl2(d, 1,0)
     8          Else
     9           0
    10        End E
    11   From AA

     方法二:

    代码
     1 Select a,
     2        b,
     3        c,
     4        d,
     5        Case
     6          When a Is Not Null Then
     7           decode(b,'',0,1+ decode(c,'',0,1+ decode(d,'',0,1)
     8          Else
     9           0
    10        End E
    11   From AA

     效果图显示:

    如果大家有其它好的方法,欢迎提出交流~

  • 相关阅读:
    西子凌波26: 看各路新秀 2015-04-19
    西子凌波21:美元 2015-03-19
    西子凌波04:再读 教你炒股票104:几何结构与能量动力结构1有感 2011-05-23
    西子凌波08:闲聊~~共勉~~ 感恩缠主 2013-12-07
    西子凌波07:传统底部形态缠论解析 2011-10-26
    西子凌波03:缠论中的MACD 2011-05-21
    数组内Merge
    leetcode -- Decode Ways
    leetcode -- Distinct Subsequences
    leetcode -- permutation 总结
  • 原文地址:https://www.cnblogs.com/ZHF/p/1612092.html
Copyright © 2020-2023  润新知