如何从基于日期的两个表中获取价值?

时间:2019-07-30 06:01:47

标签: sql postgresql

我有下表:

order_received

Product_id     date           cost         qty
1            10-01-2019         5           2
18           10-01-2019         6           4
5            12-02-2019         10          6
8            13-02-2019         7           15
1            21-02-2019         8           21
5            21-02-2019         9            1
1            15-03-2019        10            3

transfer_table

Product_id     date           qty
1            14-01-2019        1
18           21-01-2019        3
5            12-02-2019        10
8            19-02-2019        4
1            01-02-2019        1
5            11-03-2019        3
1            12-02-2019        1

我想得到这个结果:

Product_id     date           qty           Cost
1            14-01-2019        1             5
18           21-01-2019        3             6
5            12-02-2019        6             10
8            19-02-2019        4             7
1            01-02-2019        1             5
5            11-03-2019        3             9
1            22-02-2019        1             8

我有2张桌子:

1是我收到的数量和成本的订单 不同的产品和不同的成本。

第二张表是转账,其中我转账了不同日期的不同数量。

如何通过查询获得最终结果,因为如果您看到最终结果成本列是按日期显示记录,而不是最新成本显示。

1 个答案:

答案 0 :(得分:0)

如果您需要最新价格,则查询为

SELECT product_id,date,qty,(SELECT cost 
                            FROM order_received 
                            WHERE order_received.product_id = transfer_table.product_id 
                             AND order_received.date <= transfer_table.date 
                            ORDER BY date DESC LIMIT 1) AS cost 
FROM transfer_table

如果您需要平均价格,则查询为

SELECT product_id,date,qty,(SELECT SUM(qty)/SUM(cost) 
                            FROM order_received 
                            WHERE order_received.product_id = transfer_table.product_id 
                             AND order_received.date <= transfer_table.date) AS cost 
FROM transfer_table