决定一个人富有的三个条件,一是出身,二是运气,三是努力
If you can dream it,you can do it! Nothing Impossible~

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

比如有下面一个表结构:

  

 需要在列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

 

 效果图显示:

 

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

posted on 2009-11-27 15:42  ZEKELOVE  阅读(2349)  评论(5编辑  收藏  举报