Mysql 对SQL中的两列求和,其中一列需要求反

Mysql 对SQL中的两列求和,其中一列需要求反,mysql,sql,mariadb,Mysql,Sql,Mariadb,我想对SQL中的两列求和,如果和大于0,则将其输出到其中一列,如果小于0,则输出到另一列 我的代码如下所示: SELECT IF(SUM(`processed_quantity_long`,-1*`processed_quantity_short`) > 0,SUM(`processed_quantity_long`,-1*`processed_quantity_short`) AS `Position Long`,SUM(`processed_quantity_long`,-1*`pro

我想对SQL中的两列求和,如果和大于0,则将其输出到其中一列,如果小于0,则输出到另一列

我的代码如下所示:

SELECT IF(SUM(`processed_quantity_long`,-1*`processed_quantity_short`) > 0,SUM(`processed_quantity_long`,-1*`processed_quantity_short`) AS `Position Long`,SUM(`processed_quantity_long`,-1*`processed_quantity_short`) AS `Position Short`) 
From table A 
GROUPBY date
它将返回以下错误:

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'-1*
processed\u quantity\u short
)>0,SUM(
processed\u quantity\u long
,-1*`processed\u qua'在第5行的正确语法


不确定如何解决此错误。

如果出现以下情况,则内部错误

 SELECT IF(
          SUM(processed_quantity_long-processed_quantity_short) > 0,
          SUM(`processed_quantity_long`-`processed_quantity_short`) ,
          SUM(`processed_quantity_long`-`processed_quantity_short`)  AS  `Position Short`
    ) From tableA GROUP BY date
一般情况下,如果语句如下所示

SELECT IF(500<1000, "YES", "NO")

SUM
不接受两个参数。只需在计算和之前减去两个数字:

SELECT
    CASE WHEN SUM(processed_quantity_long - processed_quantity_short) >= 0 THEN SUM(processed_quantity_long - processed_quantity_short) END AS `Position Long`,
    CASE WHEN SUM(processed_quantity_long - processed_quantity_short) <  0 THEN SUM(processed_quantity_long - processed_quantity_short) END AS `Position Short`
FROM tablea
GROUP BY date
选择
当总和(已处理数量-长处理数量-短处理数量)>=0时,总和(已处理数量-长处理数量-短处理数量)结束为“位置长”,
当总和(已处理数量长-已处理数量短)小于0时,总和(已处理数量长-已处理数量短)结束为“位置短”`
从表格
按日期分组

也许编写代码的最简单方法是:

SELECT GREATEST(SUM(processed_quantity_long - processed_quantity_short), 0) AS Position_Long,
       LEAST(SUM(processed_quantity_long - processed_quantity_short), 0) AS Position_Short
FROM tablea
GROUP BY date

-1*
应该做什么?您只想减去这两列吗?
SELECT GREATEST(SUM(processed_quantity_long - processed_quantity_short), 0) AS Position_Long,
       LEAST(SUM(processed_quantity_long - processed_quantity_short), 0) AS Position_Short
FROM tablea
GROUP BY date