Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85030
  • 博文数量: 93
  • 博客积分: 2141
  • 博客等级: 大尉
  • 技术积分: 785
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-13 14:08
文章分类
文章存档

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

阅读(242) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~