在列表中,我需要为每个项目获得最低价格。
为了获得产品的最低价格,我正在使用它:
ROUND(CAST(MIN(`map`.`Product_Original_Price`) AS DECIMAL)/100,2) as `minProductPrice`
但是,我想检查此产品是否有Product_Promotional_Price
(同一个表中的另一列)。如果是,请检查它是否低于Product_Price
- 这是原始价格。
无论结果如何,如前所述返回minProductPrice
。
所以我问: 哪个查询将此问题转化为解决方案?
对于细节的缺乏感到抱歉。我的申请旨在比较产品价格。因此,存在一个返回产品列表的存储过程。结果是:
Product_Promotional_Price
Lava Roupas em Pó Omo Progress
5,50
Product_Original_Price
正如您所见,低于Product_Promotional_Price
。当这样的事情发生时,我希望得到Product_Original_Price
而不是Product_Id
。
说明我的问题:
第1行
Product_Name
= 1Market_Name
=“iPhone 5”Product_Original_Price
=“沃尔玛”Product_Promotional_Price
=“359.00”Product_Id
=“319.00”第2行
Product_Name
= 1Market_Name
=“iPhone 5”Product_Original_Price
=“Apple”Product_Promotional_Price
=“359.00”Product_Id
=“0.00”第3行
Product_Name
= 1Market_Name
=“iPhone 5”Product_Original_Price
=“BestBuy”Product_Promotional_Price
=“359.00”minProductPrice
=“299.00”
因此,当我调用我的程序时,iPhone 5
的{{1}}为299.00
,BestBuy
。
现在你们都明白了吗?
答案 0 :(得分:3)
尝试使用LEAST(),它返回传递给它的最低值:
SELECT Product_Id,
MIN(LEAST(Product_Original_Price, Product_Promotional_Price)) as Best_Price
FROM Product_Price
GROUP BY Product_Id;
看看这个SQL小提琴:
答案 1 :(得分:0)
我不知道你使用的是哪个数据库,但尝试这样的事情:
MIN(
ROUND(CAST(MIN(`map`.`Product_Price`) AS DECIMAL)/100,2)
UNION
ROUND(CAST(MIN(`map`.`Product_Promotional_Price`) AS DECIMAL)/100,2)
) as `minProductPrice`