Mysql 将两个条件逻辑结果组合成一个case语句
我编写了一个查询,从数据库中选择销售值,并在使用折扣时应用折扣。折扣要么是一个百分比,要么只是一个固定值。我的查询应用折扣(第一个案例语句),然后提取应用的金额 这让我思考是否有可能在一个案例陈述中完成这一点 查询:Mysql 将两个条件逻辑结果组合成一个case语句,mysql,mysql-logic,Mysql,Mysql Logic,我编写了一个查询,从数据库中选择销售值,并在使用折扣时应用折扣。折扣要么是一个百分比,要么只是一个固定值。我的查询应用折扣(第一个案例语句),然后提取应用的金额 这让我思考是否有可能在一个案例陈述中完成这一点 查询: SELECT SUM(CASE WHEN td.Transaction_ID IS NULL THEN p.Sale WHEN td.Transaction_ID IS NOT NULL AND d.Discount_Type = '0' THEN p.Sale -
SELECT
SUM(CASE
WHEN td.Transaction_ID IS NULL
THEN p.Sale
WHEN td.Transaction_ID IS NOT NULL AND d.Discount_Type = '0'
THEN p.Sale - (p.Sale * (dp.Discount_Percent/100))
ELSE
p.Sale - dv.Discount_Value
END) PriceDiscounted,
SUM(CASE
WHEN td.Transaction_ID IS NOT NULL AND d.Discount_Type = '0'
THEN (p.Sale * (dp.Discount_Percent/100))
WHEN td.Transaction_ID IS NOT NULL AND d.Discount_Type = '1'
THEN dv.Discount_Value
ELSE '0'
END) Discount
不,SELECT中的CASE语句是一个函数,只能返回一个值。您可以在存储过程中实现这一点,在存储过程中可以使用CASE或IF-THEN。不,SELECT中的CASE语句是一个函数,只能返回一个值。您可以在一个存储过程中实现这一点,在这个存储过程中,您可以使用CASE或IF-THEN。抱歉-我没有注意到您问题中的mysql:我的答案是特定于ms sql的。这适用于mysql中的所有条件语句吗?是,SELECT中的CASE语句只允许THEN或ELSE的值,而存储过程(或存储函数)中的CASE语句可以包含任何表达式。我要补充的是,存储过程CASE不能作为常规SELECT循环遍历表的多个记录,必须使用游标。因此性能优势将丢失。这是否适用于MySQL中的所有条件语句?是的,SELECT中的CASE语句只允许THEN或ELSE的值,而存储过程(或存储函数)中的CASE语句可以容纳任何表达式。我应该补充,如果存储过程案例不能作为常规选择在表的多个记录中循环,则必须使用游标。因此,性能优势将丢失。