如何从oracle中的其他两个表中插入数据

我正在创建一个新表。表中的值/数据来自另一个表。例如:在table A我有场Code用2个数据,EXEIMP。在table B我有一个数据20162017Year。现在我需要制作table C,其中字段Status其中Status字段中的数据为EXE-2016,IMP-2016,EXE-2017IMP-2017。这种问题的查询过程如何?如何从oracle中的其他两个表中插入数据

table A 

code | code_name | flag

EXE | Execute | Y

IMP | Implement| Y

table B

Year | phase | flag

2016 | P1 | Y

2016 | P2 | Y

2017 | P1 | Y

2017 | P2 | Y

2018 | P1 | N

table C

Status | Flag

EXE-2016 | Y

IMP-2016 | Y

EXE-2017 | Y

IMP-2017 | Y

EXE-2018 | N

IMP-2018 | N

回答:

你想要从两个表中交叉加入记录:

  • 表A每年的记录来自表A
  • 每年来自表B的MAX标记(即, 'Y'胜过'N')

然后使用CREATE TABLE c AS <query>为了从查询结果创建表格C.

create table c as 

select a.code || '-' || bb.year as status, bb.flag

from a

cross join

(

select year, max(flag) as flag

from b

group by year

) bb;

(也许巴尔巴罗斯Özhan是正确的,你真的想创建一个视图,而不是然后使用create view c as <query>。)

回答:

create table C as 

select A.code || '-' || B.year as status

from A, B

回答:

在你的情况下,最好以这样的方式来创建一个view记录sql供以后就像一个表的使用情况:

create view tableC as 

select code||' - '||year status, flag

from (

select a.code, b.year, b.flag from tableA a cross join tableB b

)

group by code, year, flag

order by year, code;/

select * from tableC;/

D e m o

回答:

CREATE table C as 

SELECT A.Code || '-' || B.Year AS

STATUS , B.flag

FROM A,B

以上是 如何从oracle中的其他两个表中插入数据 的全部内容, 来源链接: utcz.com/qa/261582.html

回到顶部