从SUM列中删除“ - ”

时间:2009-05-13 19:45:59

标签: 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

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

1 个答案:

答案 0 :(得分:9)

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

ABS(-123.445) /* this equals 123.445 */

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

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