我有两个表,代表客户产品及其竞争对手产品的数据库: tmp_match
-from\u product\u id和to\u product\u id分别表示客户产品和竞争对手产品之间的匹配。 tmp_price_history
-显示每个日期每个产品的价格。
我正在尝试编写一个查询,它将列出表中的所有日期 tmp_price_history
. 对于每个日期,我想看到客户的产品价格与竞争对手的产品价格根据表中的产品匹配对 tmp_match
,无论是否存在客户产品或竞争对手产品的价格历史记录或两者:
如果两种价格都适用于特定日期-请在其列中列出它们
如果只有客户产品的记录-仅显示客户价格(并将竞争对手栏留空)。
如果只有竞争对手产品的记录,则在其栏中显示竞争对手的价格。
预期结果:
date from_product_id to_product_id cust_price comp_price
1 1 11 99 95
2 1 11 98 94
1 1 12 92
2 1 12 91
2 2 108
我试图通过以下查询实现:
select cust_hist.date, from_product_id, to_product_id, cust_hist.price as cust_price,comp_hist.price as comp_price
from tmp_match as matches
left join tmp_price_history cust_hist
on cust_hist.product_id = matches.from_product_id
left join tmp_price_history comp_hist
on comp_hist.product_id = matches.to_product_id
;
但是它并没有达到我的目标,正如在这个sql代码片段中所看到的那样。
1条答案
按热度按时间gr8qqesn1#
我想你在找这个:
你的SQL片段太好了!