1

我想根据表(Date,ID1,ID2)Prices中的记录在表(Date,ID1,Price)中插入新记录。Headers如果表中存在一条记录Headers,其ID2等于该表中另一条记录的ID1,则必须在表Prices中插入一条新记录,其Date和ID1取自表Headers,其Price等于该表的Price 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为 ID1=300 和 ID1=400 插入的新记录,价格=500(因为 ID1=300 和 ID1=400 的记录的 ID2=100 对应于 ID1=100 的记录)。同样对于 ID1=500 和 ID1=600 的记录,必须Prices根据 ID2=200 的价格在表中插入新记录:

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
4

2 回答 2

1

没有足够的例子来知道这是否完全正确,但它适用于提供的单个案例:

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;

Example Fiddle

于 2013-10-26T23:38:35.507 回答
1

以下查询应该可以解决问题:

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)
于 2013-10-27T09:09:27.213 回答