2011年(93)
分类: Oracle
2011-08-23 13:42:50
认证:统计符合条件列总数。最近在项目报表中需要一个查询语句,用来统计符合某一列条件的其它几列的个数。
比如有下面一个表结构:
需要在列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