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

问题描述 投票:0回答:4

我正在制作一张新桌子。表中的值/数据取自另一个表。例如:在table A我有Code字段有2个数据,EXEIMP。在table B我有Year字段20162017。现在我需要用字段table C制作Status,其中字段Status中的数据是EXE-2016IMP-2016EXE-2017IMP-2017。如何查询这类问题?

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
sql oracle
4个回答
0
投票

您想要从两个表交叉连接记录:

  • 表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;

(也许BarbarosÖzhan是对的,你实际上想要创建一个视图。然后使用create view c as <query>。)


0
投票

在你的情况下,最好以这样的方式创建一个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


-1
投票
create table C as
select A.code || '-' || B.year as status
from A, B

-1
投票
CREATE table C as 
SELECT A.Code || '-' || B.Year AS 
STATUS , B.flag
FROM A,B
© www.soinside.com 2019 - 2024. All rights reserved.