这里的>
、<
和=
运算符出现语法错误,我真的不知道为什么。我已经尝试过将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
语法:
case expression when value1 then output1 when value2 then output2 else output3 end
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