从SUM列中删除" - "

0 sql

分组,我需要从列中的任何负数中删除" - "以获取某些记录号.但是Sum需要*.01来获得正确的格式.我尝试使用替换,但它被*.01抛出.下面是我的语法.

CASE WHEN SUM(ExtPrice) *.01 < 0 AND RecordNum BETWEEN 4000 AND 5999 
        THEN REPLACE(SUM(ExtPrice) *.01,'-','')
     ELSE SUM(ExtPrice) *.01 
END AS Totals
Run Code Online (Sandbox Code Playgroud)

例如,SUM(ExtPrice) *.01 在一列中给出了-5051.32,但是当我使用上面的case语句时,我得到5050另一个例子-312.67,我得到310使用案例.任何建议或更好的方法,非常感谢.

ich*_*ban 9

您可以使用ABS功能获取数字的正值.例如:

ABS(-123.445) /* this equals 123.445 */
Run Code Online (Sandbox Code Playgroud)

所以你可以用你的CASE语句替换:

CASE WHEN SUM(ExtPrice) < 0 AND RecordNum BETWEEN 4000 AND 5999         
         THEN ABS(SUM(ExtPrice) *.01)     
     ELSE SUM(ExtPrice) *.01 
END AS Totals
Run Code Online (Sandbox Code Playgroud)