Mysql 使用大于和小于函数编写SQL代码
当我尝试运行此代码时:Mysql 使用大于和小于函数编写SQL代码,mysql,sql,tsql,Mysql,Sql,Tsql,当我尝试运行此代码时: `SELECT CASE WHEN a.promotionflag=0 THEN 'NoPromotion' WHEN (Sales)/ISNULL(Margin,0) > -3.0000 AND (Sales)/ISNULL(Funding, 0) < 0 THEN 'RED' WHEN (Sales) <0 THEN 'RED' WHEN (Sales)= 0 and (Margin) <0 then 'RED' WHEN (Sales)
`SELECT
CASE WHEN a.promotionflag=0 THEN 'NoPromotion'
WHEN (Sales)/ISNULL(Margin,0) > -3.0000
AND (Sales)/ISNULL(Funding, 0) < 0 THEN 'RED'
WHEN (Sales) <0 THEN 'RED'
WHEN (Sales)= 0 and (Margin) <0 then 'RED'
WHEN (Sales)/ISNULL(Margin, 0) >= 0 THEN 'GREEN'
WHEN (Sales) IS NULL THEN 'NonPriority'
WHEN (Margin) IS NULL THEN 'NonPriority'
ELSE 'YELLOW'
END AS Promotions`
`选择
如果a.promotionflag=0,则为“NoPromotion”
当(销售)/为空时(利润率,0)>-3.0000
和(销售)/ISNULL(资金,0)<0然后为“红色”
当(销售)。然后,当我徘徊在这一点上时,我第一次收到错误时,它还提到了一个“布尔函数”
我希望此代码根据上述条件返回颜色值。ISNULL
仅接受一个参数,并在MySQL中返回1或0。您可能正在查找IFNULL
。
另外,使用0作为NULL替换是一个坏主意,因为您将得到0除法。我猜您希望使用标准的NULLIF()
函数来防止被零除法。此版本的查询应该可以工作:
SELECT (CASE WHEN a.promotionflag = 0 THEN 'NoPromotion'
WHEN Sales/NULLIF(Margin, 0) > -3.0000 AND (Sales)/NULLIF(Funding, 0) < 0 THEN 'RED'
WHEN Sales < 0 THEN 'RED'
WHEN Sales = 0 and Margin < 0 THEN 'RED'
WHEN Sales/NULLIF(Margin, 0) >= 0 THEN 'GREEN'
WHEN Sales IS NULL THEN 'NonPriority'
WHEN Margin IS NULL THEN 'NonPriority'
ELSE 'YELLOW'
END) AS Promotions
SELECT(如果a.promotionflag=0,则为'NoPromotion'
当销售/零利率(保证金,0)>-3.0000和(销售)/零利率(融资,0)<0时,则为“红色”
当销售额<0时,则为“红色”
当销售额=0且利润<0时,则为“红色”
当销售/空值(毛利,0)>=0时,则为“绿色”
当销售额为空时,则为“非优先级”
当边距为空时,则为“非优先级”
还有“黄色”
完)作为促销
我看不出你的问题有什么明显的错误。一种可能是在那个位置附近有一个坏角色。有时候,只需重新键入代码就可以解决问题。这一项更改将ISNULL更改为IFNULL:
Set @promotionflag=-1;
set @Margin = 4.0000;
set @Sales = 3;
set @Funding = 4;
SELECT
CASE WHEN @promotionflag=0 THEN 'NoPromotion'
WHEN (@Sales)/(IFNULL(@Margin,0)) > -3.0000 AND (@Sales)/(IFNULL(@Funding, 0)) < 0 THEN 'RED'
WHEN (@Sales) <0 THEN 'RED'
WHEN (@Sales)= 0 and (@Margin) <0 then 'RED'
WHEN (@Sales)/(IFNULL(@Margin, 0)) >= 0 THEN 'GREEN'
WHEN (@Sales) IS NULL THEN 'NonPriority'
WHEN (@Margin) IS NULL THEN 'NonPriority'
ELSE 'YELLOW'
END AS Promotions
Set@promotionflag=-1;
设置@保证金=4.0000;
设置@Sales=3;
设置@Funding=4;
选择
当@promotionflag=0时,则为“NoPromotion”
当(@Sales)/(IFNULL(@Margin,0))>-3.0000和(@Sales)/(IFNULL(@Funding,0))<0时,则为“红色”
当(@Sales)MySql不使用T-Sql时,只有Sybase和Sql Server使用它。请确定您使用的数据库并编辑标记。