oracle统计每列和,Oracle中统计契合某列条件的列总和

  • Post author:
  • Post category:其他


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