我有一张产品价格表。有两种价格类型:A =报价,B =标准价格。例如:
product_id | price | price_type
-------------------------------------
001 | 0.99 | A
001 | 1.49 | B
我正在寻找一个返回
的SELECT语句对于上面的示例数据,语句必须返回要约价格= 0.99 =类型A.
答案 0 :(得分:2)
这可以通过左连接完成。我假设你至少总是有一个产品的标准价格行。
select p1.product_id,
coalesce(p2.price, p1.price) as price
from product_prices p1
left join product_prices p2
on p2.product_id = p1.product_id
and p2.price_type = 'A'
where p1.price_type = 'B'
答案 1 :(得分:2)
您可以在桌面上加入两个查询并使用coalesce
来确定是否有要约:
SELECT b.product_id, COALESCE(a.price, b.price)
FROM (SELECT product_id, price
FROM products
WHERE price_type = 'B') b
LEFT JOIN (SELECT product_id, price
FROM products
WHERE price_type = 'A') a ON a.product_id = b.product_id
答案 2 :(得分:0)
根据您的示例,可以通过以下方式完成:
选择* 来自产品 其中price_type in(选择min(price_type) 来自product_id)的产品组;