Oracle 从第2列记录替换第1列记录
我在Oracle中有两列,分别位于两个不同的数据中。例如:我的第一列是FROM,第二列是TOOracle 从第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
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')