繁体   English   中英

根据另一个表中的列在表中插入记录(在Oracle SQL Developer中)

[英]Insert record in a table based on a column in another table (in Oracle SQL developer)

我想基于表Headers (日期,ID1,ID2)中的记录在表Prices (日期,ID1,价格)中插入新记录。 如果表Headers中存在一条记录,其ID2等于该表中另一个记录的ID1,则必须在表价格中插入一条新记录,该记录的日期和ID1是从表标题中获取的,其价格等于该表中已经有ID1的记录。 例如:

输入:

Table Headers:

Date          ID1         ID2
-------------------------------
2013.08.10     100        200
2013.08.10     300        100
2013.08.10     400        100
2013.08.11     200        500
2013.08.11     500        200
2013.08.11     600        200


Table Prices:

Date          ID1      Price
---------------------------
2013.08.10     100      500
2013.08.11     200      1200

输出中必须包含在Prices为ID = 100和ID1 = 400且Prices为ID = 500的Prices插入的新记录(因为ID1 = 300和ID1 = 400的记录的ID2 = 100对应于ID1 = 100的记录)。 同样,对于ID1 = 500和ID1 = 600的记录,必须基于ID2 = 200的价格在表Prices插入新记录:

Date          ID1        Price
--------------------------------
2013.08.10     100        500
2013.08.10     300        500
2013.08.10     400        500
2013.08.11     200        1200
2013.08.11     500        1200
2013.08.11     600        1200

没有足够的示例知道这是否完全正确,但是它仅适用于所提供的一种情况:

Insert Into Prices (
    "Date",
    id1,
    Price
)
Select
    h2."Date",
    h2.id1,
    p.Price
From
    Headers h1
        Inner Join
    Headers h2
        on h1.id1 = h2.id2
        Inner Join
    Prices p
        on h2.id2 = p.id1;

小提琴的例子

以下查询可以解决问题:

insert into Prices ("Date",ID1,Price)
select h."Date",h.ID1,p.Price
from Headers h join Prices p on (p.ID1=h.ID2)
where h.ID1 not in (select ID1 from Prices)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM