我在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"然后列"来自"将列"替换为"记录......在Oracle查询中是否有任何方法。
输出结果:
Bhx ACE
bhx BHX
LTN PRA
ltn LTN
lba agp
lba lba
man ssh
man man
lgw tfs
lgw lgw
答案 0 :(得分:1)
只需使用相反的别名选择它们:
CREATE TABLE [dbo].[Results](
[Result_AN] [int] IDENTITY(1,1) NOT NULL,
[Detail_AN] [int] NULL,
[Drug] [nvarchar](10) NULL,
[LDrug] [nvarchar](10) NULL,
[Lab_Result] [nvarchar](10) NULL,
[MRO_Result] [nvarchar](10) NULL,
[Confirm] [nvarchar](6) NULL,
[CutOff] [nvarchar](6) NULL,
[Quant] [nvarchar](10) NULL,
[Screen] [nvarchar](6) NULL,
[Unit] [nvarchar](6) NULL,
[Deleted] [bit] NULL,
[Scrn_Result] [nvarchar](10) NULL,
[SSMA_TimeStamp] [timestamp] NOT NULL,
CONSTRAINT [Results$PrimaryKey] PRIMARY KEY CLUSTERED
(
[Result_AN] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
BTW - “from”是SQL中的保留字。虽然可以解决这个问题(例如,通过使用引号),但对于列的名称来说,这是一个糟糕的选择,你应该找到一个不同的名称。
答案 1 :(得分:0)
SELECT "From" ,case when "TO" in ('BHX', 'LTN' , 'LBA', 'LGW', 'MAN') then "From" else "To" end "To"
带有Case
的 IN
表达式允许您检查TO列的不同值,如果它们相同,则使用From列,如果不是,则使用To列。
答案 2 :(得分:0)
UPDATE TABLENAME
SET From =To,
SET To = From
WHERE TO IN ('BHX', 'LTN' , 'LBA', 'LGW', 'MAN')