2012-03-29 8 views
2

qty * priceという単純なSQL演算で問題が発生していますが、間違った値が返されています。単純なSQL演算で不正な結果が返される

これはSQL Server 2005です.2000 SQLサーバーの互換性は80に設定されています。

私は例えば

下に示す問題が午前理由を理解する上で任意のヘルプ:
トランザクション表:実際の問題は、これをした

Select id, price, qty, (qty * price) from transact 


 
    id  price qty 
    1  2.77 20.00 
    1  2.77 25.00 
    1  2.77 10.00 
    2  0.10 50.00 
    2  0.10 80.00 
    3  0.10 50.00 
    3  0.10 60.00 

SQLをし、それは私のせいだった:(

Select id, CAST(price AS DECIMAL(5,2)), qty, (qty * price) from transact 

は、次の値を返します。

 
    id price qty Total 
    1 2.77 20.00 55.400000 Correct 
    1 2.77 25.00 69.250000 Correct 
    1 2.77 10.00 27.700000 Correct 
    2 0.10 50.00 4.800000 Should be 5.0000 
    2 0.10 80.00 7.680000 Should be 8.0000 
    2 0.10 50.00 5.050000 Should be 5.0000 
    2 0.10 60.00 6.060000 Should be 6.0000 
    3 39.00 1.00 39.000000 Correct 
    3 39.00 2.00 78.000000 Correct 
    3 39.00 3.00 117.000000 Correct 
+4

列のデータ型? – deutschZuid

+0

私はジェームズと共にこの1つです。あなたのテーブルをスクリプトし、create tableステートメントを投稿してください。私は価格がお金でなければならないことを示唆し、あなたが売っているものによっては、それが整数でなければなりません。 –

答えて

4

あなたの価格はどこかに丸められています。実行している選択に実際の価格が表示されていません。

select round(0.096, 2) price, 0.096 * 50.00 total 

結果:

price total 
0.10  4.80000 
+0

@all_postsあなたはすべて正しいです。私は問題を投稿する前に、より良い分析を実際に試みています。私は時間がたっぷりで、いつもあなたを乗り越えるような、とてもリトルなものでした。投稿することができるようにテーブルとSQLをクリーンアップしている間、価格列はキャストされました(小数点(5,2)としての価格)、私は価格が* qtyの数学にないことを見ました。投稿していただきありがとうございました。最初に見つけたはずの質問をお願いして申し訳ありません。私はずっと前に、あなたがコンパイラを責めようとしたときに指を自分自身に戻すように指示しました.... – Jdunn5

関連する問題