CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

写一条SQL语句,在线等待

楼主afantict(非洲土狼)2004-12-03 15:47:16 在 Oracle / 开发 提问

假如有两个字段A,B,如果B为空的话,我想SELECT A FROM TABLE WHRE A > X,如果B不为空的话,我想SELECT B FROM TABLE WHRE B > X,就不关心A了。一条语句如何实现? 问题点数:50、回复次数:14Top

1 楼CodeMagic(ErrorDetector)回复于 2004-12-03 15:50:45 得分 5

select   a   from   tb   where   a>x   and   b   is   null  
      union   all  
  select   b   from   tb   where   b>x   and   b   is   not   nullTop

2 楼zmgowin(hermit)回复于 2004-12-03 15:51:30 得分 10

select   a   from   table   where   a>x   and   b   is   null  
  union   all  
  select   b   from   table   where   b>x   and   b   is   not   null;  
   
  or  
  select   nvl(b,a)   from   table   where   decode(b,null,a,b)>x;Top

3 楼afantict(非洲土狼)回复于 2004-12-03 15:53:16 得分 0

decode什么意思?Top

4 楼xhy818(zh1860)回复于 2004-12-03 15:54:51 得分 5

是這個意思嗎?  
   
  SELECT A FROM TABLE WHRE A > Xand   B   is   null  
  union    
  SELECT B FROM TABLE WHRE B > X   and   B   is   not   nullTop

5 楼afantict(非洲土狼)回复于 2004-12-03 15:56:34 得分 0

select   nvl(b,a)   from   table   where   b>x;  
  这样可以吗?  
  Top

6 楼LGQDUCKY(飘)回复于 2004-12-03 15:57:31 得分 10

decode   是ORACLE的函数,相当于     如果   。。。   就     。。。。Top

7 楼afantict(非洲土狼)回复于 2004-12-03 16:08:24 得分 0

nvl(b,a)  
  的意思是如果b字段为空,就取a字段吗?Top

8 楼vipyami()回复于 2004-12-03 16:10:36 得分 5

select   NVL(B,A)   where   NVL(B,A)>xTop

9 楼Nicholas_zhao()回复于 2004-12-03 16:14:31 得分 5

SELECT   NVL(B,A)   FROM   TABLE   WHERE   NVL(B,A)   >   XTop

10 楼sosolong(solong)回复于 2004-12-03 16:14:54 得分 5

这个效率高些:  
  select   nvl(b,a)   from   table   where   decode(b,null,a,b)>x;Top

11 楼afantict(非洲土狼)回复于 2004-12-03 16:16:27 得分 0

select   nvl(b,a)   from   table   where   decode(b,null,a,b)>x;  
  这条语句里面的  
  nvl(b,a)  
  的意思是如果b字段为空,就取a字段吗?  
   
  我可以select   nvl(b,a)   as   abcd   from   table   where   decode(b,null,a,b)>x   order   by   abcd;吗?  
  Top

12 楼afantict(非洲土狼)回复于 2004-12-03 16:39:35 得分 0

假如有两个字段A,B,如果B为空的话,我想SELECT A FROM TABLE WHRE A > X,如果B不为空的话,我想SELECT B FROM TABLE WHRE B > X,就不关心A了。一条语句如何实现?  
  如果我还想在这条语句里面统计字段C的和,放在一条语句里面  
  select   nvl(b,a),SUM(C)   from   table   where   decode(b,null,a,b)>x  
  这样写可以吗?  
  应该怎么写?  
  Top

13 楼zmgowin(hermit)回复于 2004-12-03 16:44:26 得分 5

后面带上group   by   nvl(b,a)Top

14 楼afantict(非洲土狼)回复于 2004-12-03 16:51:25 得分 0

我不想group  
  我想每条都取Top

相关问题

  • 菜 SQL 语句 ,在线等待!!
  • 急!这个sql语句,在线等待
  • insert语句错误!在线等待!
  • sql语句问题。在线等待
  • sql语句问题(在线等待)
  • 求救SQL语句,在线等待
  • 求救SQL语句,在线等待
  • 求救SQL语句,在线等待
  • SQL语句问题,急,在线等待
  • 在线等待问题!SQL语句!

关键词

  • 语句
  • 字段
  • null
  • nvl
  • decode
  • 意思
  • 话
  • from table where
  • 为空
  • where

得分解答快速导航

  • 帖主:afantict
  • CodeMagic
  • zmgowin
  • xhy818
  • LGQDUCKY
  • vipyami
  • Nicholas_zhao
  • sosolong
  • zmgowin

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo