2009-05-13 7 views
0

Groupe, Je dois supprimer le '-' de tous les nombres négatifs dans une colonne pour certains numéros d'enregistrement. Cependant, la somme doit * par .01 pour obtenir le format correct. J'ai essayé d'employer le remplacement mais il est jeté par le * .01 Voici ma syntaxe.Supprimer '-' de la colonne SUM

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

Par exemple SUM(ExtPrice) *.01 dans une colonne me donne -5051,32 mais quand j'utilise la déclaration de cas ci-dessus je reçois 5050 un autre exemple -312,67 et je reçois 310 en utilisant le cas. Toutes les suggestions ou de meilleures façons de le faire sont grandement appréciées.

+0

Pourquoi ne vous précise pas quelle langue ou d'un produit que vous utilisez? –

Répondre

9

Vous pouvez utiliser la fonction ABS pour obtenir la valeur positive d'un nombre. Par exemple:

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

Vous pouvez remplacer votre instruction CASE avec:

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

Just CASE WHEN SUM (ExtPrice) <0 pour commencer semble mieux - pourquoi multiplier par .01 là, cela ne change pas le signe. –

+0

@Alex - Bonne observation, j'avais copié le code tel qu'il était. – ichiban

Questions connexes