gpt4 book ai didi

mysql - MySQL 中的嵌套 CASE 语句

转载 作者:IT老高 更新时间:2023-10-28 23:56:31 25 4
gpt4 key购买 nike

我第一次在 SQL 语句中使用 CASE Logic。如果我删除 CASE 语句,一切正常,所以没有它 SQL 是有效的。

我需要根据几件事来计算商品总价。

如果“销售价格”有效且“选项附加费”有值,则总计为:数量 *(销售价格 + 选项附加费)

如果“销售价格inactive且“选项加价”有值,则总计为:数量 *(价格 + 选项加价)

如果“销售价格”有效且“选项加价”没有值(value),则总计为:数量 * 销售价格

如果“销售价格inactive且“Option Upcharge”没有值(value),则总计为:数量 * 价格

如果未添加任何选项,则 tblproduct_options.option_upcharge 的值在输出中为 NULL。

感谢您的帮助。

布雷特

这是我的 SQL:

SELECT tblshopping_cart.session_id, tblshopping_cart.product_id, tblshopping_cart.product_qty, tblshopping_cart.product_option, tblproducts.product_title, tblproducts.product_price, tblproducts.product_sale_price_status, tblproducts.product_sale_price, tblproduct_options.option_text, tblproduct_options.option_upcharge,
CASE
WHEN (tblproducts.product_sale_price_status = 'Y')
CASE
WHEN (tblproduct_options.option_upcharge IS NOT NULL)
THEN (tblshopping_cart.product_qty * (tblproducts.product_sale_price + tblproduct_options.option_upcharge))
ELSE (tblshopping_cart.product_qty * tblproducts.product_sale_price)
END
ELSE
CASE
WHEN (tblproduct_options.option_upchage IS NOT NULL)
THEN (tblshopping_cart.product_qty * (tblproducts.product_price + tblproduct_options.option_upcharge))
ELSE (tblshopping_cart.product_qty * tblproducts.product_price)
END
END AS product_total
FROM tblshopping_cart
INNER JOIN tblproducts ON tblshopping_cart.product_id = tblproducts.product_id
LEFT JOIN tblproduct_options ON tblshopping_cart.product_option = tblproduct_options.option_product_id
ORDER BY tblshopping_cart.product_qty ASC

失败并显示消息:

CASE
WHEN (tblproduct_options.option_upcharge IS NOT NULL)
THEN (tblshopping_' at line 4

最佳答案

您在第一个 CASE 语句中缺少 THEN。 (抱歉,我必须添加表别名)

SELECT sc.session_id
, sc.product_id
, sc.product_qty
, sc.product_option
, p.product_title
, p.product_price
, p.product_sale_price_status
, p.product_sale_price
, po.option_text
, po.option_upcharge
, CASE
WHEN (p.product_sale_price_status = 'Y')
THEN <-- add this
CASE
WHEN (po.option_upcharge IS NOT NULL)
THEN (sc.product_qty * (p.product_sale_price + po.option_upcharge))
ELSE (sc.product_qty * p.product_sale_price)
END
ELSE
CASE
WHEN (po.option_upchage IS NOT NULL)
THEN (sc.product_qty * (p.product_price + po.option_upcharge))
ELSE (sc.product_qty * p.product_price)
END
END AS product_total
FROM tblshopping_cart sc
INNER JOIN tblproducts p
ON sc.product_id = p.product_id
LEFT JOIN tblproduct_options po
ON sc.product_option = po.option_product_id
ORDER BY sc.product_qty ASC

关于mysql - MySQL 中的嵌套 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11618730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com