Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 从第2列记录替换第1列记录_Oracle_Plsql - Fatal编程技术网

Oracle 从第2列记录替换第1列记录

Oracle 从第2列记录替换第1列记录,oracle,plsql,Oracle,Plsql,我在Oracle中有两列,分别位于两个不同的数据中。例如:我的第一列是FROM,第二列是TO From TO Bhx ACE Ace BHX LTN PRA PRA LTN lba agp agp lba man ssh ssh man lgw tfs tfs lgw 我想要的是:如果TO列是BHX、LTN、LBA、LGW、MAN,那么从replace列到records列。。。Orac

我在Oracle中有两列,分别位于两个不同的数据中。例如:我的第一列是FROM,第二列是TO

From    TO
Bhx      ACE
Ace      BHX
LTN      PRA
PRA      LTN
lba      agp
agp      lba
man      ssh
ssh      man
lgw       tfs
tfs       lgw
我想要的是:如果TO列是BHX、LTN、LBA、LGW、MAN,那么从replace列到records列。。。Oracle查询中是否有任何方法

输出结果:

   Bhx      ACE
   bhx      BHX
   LTN      PRA
   ltn      LTN
   lba      agp
   lba      lba
   man      ssh
   man      man
   lgw      tfs
   lgw      lgw

只需使用相反的别名选择它们:

SELECT "To" AS "From", "From" AS "To"
FROM   my_table
顺便说一句,from是SQL中的保留字。虽然可以解决这个问题,例如使用引号,但对于列名来说,这是一个糟糕的选择,您可能应该找到一个不同的列名

SELECT "From" ,case when "TO" in ('BHX', 'LTN' , 'LBA', 'LGW', 'MAN') then "From" else "To" end "To"

带IN的Case表达式允许您检查to列的不同值,如果它们相同,则使用From列,如果不相同,则使用to列。

否您没有从ACE到BHX@CricBuzz请发布您的预期输出。这是不可能理解的问题,因为它目前的措辞。
UPDATE TABLENAME
  SET From =To,
  SET To = From
   WHERE TO IN ('BHX', 'LTN' , 'LBA', 'LGW', 'MAN')