带有加法和较大/较小运算符的CASE语法



这里的><=运算符出现语法错误,我真的不知道为什么。我已经尝试过将reorder_quantity + in_stock封装在()中,但仍然会出现同样的错误。我在这里错过了什么?

我正试图使用以下代码来生成一个我应该为某些产品订购的金额列表。我使用SQL这样做是因为我以盎司为单位订购产品。但它们以毫升为单位进行库存,我的POS无法本地处理转换。

select itemnum, itemname, in_stock, reorder_level, 
case reorder_quantity + in_stock 
when reorder_quantity + in_stock > reorder_level 
then reorder_quantity/29.5735                                                
when reorder_quantity + in_stock = reorder_level 
then reorder_quantity/29.5735*2
when reorder_quantity + in_stock < reorder_level 
then reorder_quantity/29.5735*2
else 0 
end as order_amount_oz
from inventory 
group by itemnum 
and in_stock < reorder_level

您混合了两种类型的case语法:

  1. case expression when value1 then output1 when value2 then output2 else output3 end
  2. case when expression = value1 then output1 when expression = value2 then output2 else output3 end

在一起,这是一个语法错误。选择其中一个。

尝试这种与您的意图相同的重构和简化:

reorder_quantity / 29.5735 * 
case when reorder_quantity + in_stock > reorder_level then 1 else 2 end as order_amount_oz

如果我理解正确,您可以尝试删除group by并使用括号

select itemnum, itemname, in_stock, reorder_level, 
case 
when (reorder_quantity + in_stock) > reorder_level 
then reorder_quantity/29.5735                                                
when (reorder_quantity + in_stock) = reorder_level 
then reorder_quantity/(29.5735*2)
when (reorder_quantity + in_stock) < reorder_level 
then reorder_quantity/(29.5735*2)
else 0 
end as order_amount_oz
from inventory 

最新更新