zoukankan      html  css  js  c++  java
  • 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

     效果图显示:

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

  • 相关阅读:
    Java——数组
    Java——控制循环结构
    脏检查
    Session跟SessionFactory的线程安全与非安全
    脏检查and刷新机构
    oracle函数
    多线程下单列模式
    多线程
    线程同步
    文件上传功能的实现
  • 原文地址:https://www.cnblogs.com/ZHF/p/1612092.html
Copyright © 2011-2022 走看看