我有两张包含以下数据的表格:
Table1
:
PRODUCT | PRICE | NEWPRICE
Table2
:
PRODUCT | PRICE | NEWPRICE
Table1
已完成。已创建Table2
以更新Table1
。 Table1
包含去年的数据,而Table2
是最新的。但Table2
仅包含今年PRODUCT
的{{1}}个。
现在我尝试做的是:
NEWPRICE
有没有办法做到这一点?也许有某种SELECT
Table1.PRODUCT, Table1.PRICE,
**(IF Table2.NEWPRICE -> select this, ELSE Table1.NEWPRICE)**
?
答案 0 :(得分:1)
我相信这就是你想要的:
SELECT
Table1.PRODUCT, Table1.PRICE, COALESCE(Table2.NEWPRICE, Table1.NEWPRICE) AS "New Price"
FROM Table1 LEFT JOIN Table2 ON Table1.Product = Table2.Product
left join
将获取Table1
中的所有行以及来自Table2
的匹配行,如果Table2
中没有匹配的行,则Table2.NEWPRICE
将为NULL,COALESCE
将获得Table1.NEWPRICE
值。
这假设表1中存在所有产品。如果不是这种情况,您可以构建具有两个表的并集的所有产品的源,并将其用作两个左连接的左侧,如下所示:
select
all_products.product,
Table1.PRICE,
coalesce(Table2.Newprice, Table1.Newprice) AS "New Price"
from (select product from table1 union all select product from table2) all_products
left join Table1 on all_products.product = Table1.product
left join Table2 on all_products.product = Table2.product