2009-05-13 7 views
0

グループ 特定のレコード番号の列の負の数値から ' - 'を削除する必要があります。しかし、正しいフォーマットを得るためには.01で*する必要があります。私は置換を使用しようとしましたが、* .01によって投げ捨てられています。以下は私の構文です。たとえばSUM(ExtPrice) *.01についてはカラムから ' - 'を削除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 

1列目の私に-5051.32を与えますが、私は上記のcase文を使用するとき、私は別の例-312.67 5050を取得し、私はケースを使用して310を得ます。これを行うための提案やより良い方法は大変ありがたいです。

+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 
+0

ちょうどその時SUM(ExtPrice)<0を開始すると良いでしょう - なぜそこに.01を乗算すると、それは符号を変更しません。 –

+0

@Alex - よく見て、コードをそのままコピーしました。 – ichiban

関連する問題