-1

目标

在一个列表中,我需要为每个项目获得尽可能低的价格。

问题

为了获得产品的最低价格,我使用这个:

ROUND(CAST(MIN(`map`.`Product_Original_Price`) AS DECIMAL)/100,2) as `minProductPrice`

但是,我想检查这个产品是否有Product_Promotional_Price(同一张表中的另一列)。如果是,请检查它是否低于Product_Price原价。

不管结果如何,minProductPrice如前所示返回。

所以我问:哪个查询将这个问题变成了解决方案?

额外细节

由于缺乏细节而感到抱歉。我的应用程序旨在比较产品价格。因此,有一个返回产品列表的存储过程。结果是:

图片 01

但是Product_Promotional_PriceofLava Roupas em Pó Omo Progress5,50并且如您所见,低于Product_Original_Price。当这样的事情发生时,我想得到Product_Promotional_Price而不是 Product_Original_Price.

更多细节

为了说明我的问题:

第 1 行

  • Product_Id= 1
  • Product_Name=“iPhone 5”
  • Market_Name=“沃尔玛”
  • Product_Original_Price= "359.00"
  • Product_Promotional_Price= "319.00"

第 2 行

  • Product_Id= 1
  • Product_Name=“iPhone 5”
  • Market_Name=“苹果”
  • Product_Original_Price= "359.00"
  • Product_Promotional_Price= "0.00"

第 3 行

  • Product_Id= 1
  • Product_Name=“iPhone 5”
  • Market_Name=“百思买”
  • Product_Original_Price= "359.00"
  • Product_Promotional_Price= "299.00"

所以,当我调用我的程序时,minProductPriceforiPhone 5299.00, by BestBuy

现在大家能明白了吗?

4

2 回答 2

3

尝试使用 LEAST(),它返回传递给它的最低值:

SELECT Product_Id,
  MIN(LEAST(Product_Original_Price, Product_Promotional_Price)) as Best_Price
FROM Product_Price
GROUP BY Product_Id;

看看这个 SQL Fiddle:

http://sqlfiddle.com/#!2/f380e0/1/0

于 2013-06-18T14:39:43.953 回答
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`
于 2013-06-18T14:35:24.997 回答