根据某些条件修改列值

时间:2014-04-23 19:07:24

标签: sql oracle oracle11g

鉴于下表:

 ... |  item  | type | ...
 ... |    A   |  1   | ...
 ... |    B   |  2   | ...
 ... |    A   |  2   | ...
 ... |    A   |  3   | ...
 ... |    B   |  3   | ...
 ... |    A   |  2   | ...

通过配对(A1,B2,A2等)拨打电话。 表中有一个错误,其中A3实际上应该是C3。

我想编写一个返回行的查询,如果行返回A3,则将项目列更改为C.

不起作用的示例查询:

SELECT (item like 'A' ? (type == 3? 'C' : 'A') : item) as "item", type from table; 

我想要的输出是:

"item" | type
   A   |  1  
   B   |  2  
   A   |  2   
   C   |  3  
   B   |  3   
   A   |  2   

这样做的正确方法是什么?如果可能的话?

1 个答案:

答案 0 :(得分:4)

   update table tablename
     set item='C'
     where type=3 and item='A'

如果您不需要在表格中更新这些值,但是为了获得替换后的值,那么

   select 
      case when item='A' and type=3 then 'C' 
           else item 
           end as newitem, type from tablename