Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用大于和小于函数编写SQL代码_Mysql_Sql_Tsql - Fatal编程技术网

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使用它。请确定您使用的数据库并编辑标记。