oracle 如果我在查询出来的结果中每一列的值为1,2 我要根据条件只显示一个值怎么处理

列如: 查询出来的结构有这么两列
列1 列2
1 a,d
1 null
2 b,c
2 b,c
2 null
3 a,c
现在在列2中,a与b属于类1、c与d属于类2,而且类1中a与b不会出现共存的现象,在列1相同的情况下,列2的结果只会有null和相同的值的情况。
我只将类1的值a保留下来,并且要将值为null的赋值为与之列相同的类1,如第二行中的null赋值显示为a,第五行中的null赋值显示为b,但是都不更新数据库数据,只为了查询出结果。

用case和正则表达式可以处理,不知道列1的值为3时怎么处理,所以我没处理,你可以自己修改。

with t as
( select  1 col1, 'a,d' col2 from dual
  union all
  select 1, null from dual
  union all
  select 2, 'b,c' from dual
  union all
  select 2, 'b,c' from dual
  union all
  select 2,  null from dual
  union all
  select 3, 'a,c' from dual
  )
select col1, case when col1 = 1 
                  then case when col2 is null then 'a' 
                            when col2 is not null then  regexp_substr(col2,'([a-b])') 
                            else col2 end
                  when col1 = 2 
                  then  case when col2 is null then 'b' 
                             when col2 is not null then  regexp_substr(col2,'([c-d])') 
                             else col2 end 
                  else col2 end

   from t;

温馨提示:内容为网友见解,仅供参考
无其他回答

oracle 如果我在查询出来的结果中每一列的值为1,2 我要根据条件只显示一...
用case和正则表达式可以处理,不知道列1的值为3时怎么处理,所以我没处理,你可以自己修改。with t as( select 1 col1, 'a,d' col2 from dual union all select 1, null from dual union all select 2, 'b,c' from dual union all select 2, 'b,c' from dual union all ...

oracle 查询所有字段,某字段重复只显示一条
一,oracle数据库,情景:表(客户-业务员)中数据都不完全重复,但是可能多条数据其中某些字段重复。我想要取得表中符合条件的记录,但是这些记录中的客户id和客户名称发生重复的话只能留一个。二,如上图我想找出“冯冬梅”负责的所有客户,但是由于她属于多个部门,此表存储的是不同部门-不同人员对应的...

Oracle SQL检索结果有重复,怎么重复的只显示一条?
Join 关联中数据重复第一种方法是join 表时使用子查询GROUP BY或Distinct 去重关联条件,另外就是 row_number() over(partition by )

在oracle 中如何只取一个列中的部分字符串
1、如果只有,瓦和千瓦,可以这样写,select sum(decode (c1_1,1,c1_1*1000,c1_1)) from (select t.*, decode(c1.contain('瓦'),1,c1.contain('千瓦'),0,0) c1_1,replace(replace(c1,'千瓦','') ,'瓦','')) c1 from table1 t)2、如果不只瓦和千瓦,可依照上述办法...

SQL把几个字段作为条件,同样的条件只显示一条
oracle:select * from 表 where rownum=1;MSSQL: select top 1 * from 表;select * from (select t.*,row_number()over(partition by unitname,asset_code,asset_name order by unitname) as rn from 表 t)where rn=1

oracle怎么让一个字段不同条件下的值展示出来
Oracle让一个字段不同条件下的值展示出来用out返回参数。Oracle让一个字段不同条件下的值展示出来用out返回参数,字段值用符号拼接起来后返回到匿名块,改变字段的distinct关键字的条件out返回参数即可。Oracle是甲骨文公司推出的一款关系数据库管理系统。代码是一组由字符符号或信号码元以离散形式表示信息的...

oracle如何删除重复数据oracle如何删除重复数据只保留一条
如果只取1条记录:select列名from表名whererownum=1 如果想取前5条记录:select列名from表名whererownum>=5 oracle查询出来的数据怎么消除重复数据?oracle查询出来的数据消除重复数据的具体步骤如下:1、首先我们查看表中重复的数据。2、然后我饿美女使用distinct去除函数查询出去掉重复后的数据。3、然后我们...

数据库select检索多个满足条件的值,如何只取其中一个,急...
先说一点,一个变量只能存储一条数据 你要是查出多个的话,需要用到游标 select t.bh --into ls_bh from(select bh,min(shuliang2) shuliang2 from A where SHULIANG1>=5 and SHULIANG1 <=10 group by bh) t先把into ls_bh 注释掉,看下运行结果 有问题追问,百度知道新版很烂,无法...

Oracle中rownum的用法详解
rownum是Oracle系统自动分配给查询结果中每一行的顺序编号,编号从1开始,依次递增。此字段可用于限制返回的查询结果数量,但不能用任何表名作为前缀。1. 对于等于某值的查询条件:如果目标是找到第一条查询数据,使用rownum=1即可实现。若要获取第二条数据,则直接使用rownum=2无法实现,因为rownum从1开始...

oracle数据库怎样删除所有表中的某列值为1的数据?
另外还可以有个办法,建立在你对数据库非常清楚的前提下 不管什么数据库表名、字段名、索引名、主键名、用户数据库状态等信息都会写在master库中,在这个库中你可以取得所有表名,通过查询指定系统表产生指定条件的删除语句的查询结果,你另存出来就可以直接执行了。

相似回答