2017-11-09 6 views
0

お互いに異なる金額を返すことを検討しています。私は、このデータを取り扱っております:負の符号を無視するSQL SERVER

Amount InvoiceNumber Amount2 InvoiceNumber2 
1233.99  1   -1233.99  1 
567.99  2   567.99   2 
-3335.99  3   -3335.99  3 
-3335.99  4   4000.99   4 

は今、私は無視することによって互いに異なる値を返すようにしたい、そのような

Amount InvoiceNumber Amount2 InvoiceNumber2 
-3335.99  4  4000.99  4 

として結果を探しています - 記号をまだ維持します結果の - 記号。例えば。私は1233と-1233を維持したいのですが、これは信用度などを反映している可能性があるからです。

実際に扱っている日付は小数点以下の桁が含まれています。私は左の構文を使うことができると思ったが、記号をスキップする必要がある。

誰でも助言をいただけますか?おかげ

SQLフィドル - http://sqlfiddle.com/#!6/31ee0/7

試み:

SELECT I.Amount, I.InvoiceNumber, 
I2.Amount2, I2.InvoiceNumber2 
FROM Invoice I 
JOIN Invoice2 I2 ON I.InvoiceNumber = I2.InvoiceNumber2 
WHERE RIGHT(I.Amount,3) <> RIGHT(I2.Amount2,3) 
+0

WHEREの代わりにANDを実行します。これは結合条件です。 – jarlh

答えて

1

SQL ServerでABSを使用すると、-signをスキップできます。

SELECT I.Amount, I.InvoiceNumber, 
I2.Amount2, I2.InvoiceNumber2 
FROM Invoice I 
JOIN Invoice2 I2 ON I.InvoiceNumber = I2.InvoiceNumber2 
WHERE ABS(I.Amount) <> ABS(I2.Amount2) 

希望します。

0

where句を削除し、uがこのよう

SELECT I.Amount, I.InvoiceNumber, 
I2.Amount2, I2.InvoiceNumber2 
FROM Invoice I 
JOIN Invoice2 I2 ON I.InvoiceNumber = I2.InvoiceNumber2 
and I.Amount <> I2.Amount2 

それを達成することができます - あなたは-sign使用を無視する場合ABS関数

SELECT I.Amount, I.InvoiceNumber, 
I2.Amount2, I2.InvoiceNumber2 
FROM Invoice I 
JOIN Invoice2 I2 ON I.InvoiceNumber = I2.InvoiceNumber2 
and abs(I.Amount) <> abs(I2.Amount2) 
関連する問題