|
分類:[データベース全般]
と表題が書ききれませんでした。片桐@悩める子羊です。
要するに、 「SQLServer2005-SP2でfloat型を四則計算、集合関数でSUM後にmoney型フィールドへUPDATEした場合、算出結果が異なる現象の原因と対処方法を知りたい」です。
TABLE A( a float ,ritu float,ID int) ←IDが2000個、1ID当たり200件 TABLE B( b money ,ID int)
でAとBの関係はN:1です。A.aには約上6〜7桁くらいの数値が、rituには上3桁、下5桁くらいの数値が入ってきますが上限は100です。ここで、
UPDATE B.b = A1.a from B,(SELECT ID, sum(a * (ritu /100)) AS a from A group by ID) A1 where B.ID = A1.ID; SELECT ID , b from B; go
というSQLをクエリで10回連続で走らせた時、Aテーブルの中身が全く同じものであるにもかかわらず、走らせるたびにB.bの値が異なってしまいます。
sum(a * (ritu /100)) の集計値は10回とも一致していることは確認できたのですが、いざ、money型へUPDATEするとおかしい…… ちなみに、非常に微妙な数値で、1.xxxずつほど増加していくのも気になります。
確実に同じ数値にする方法はあるでしょうか? それとも、何か設定がおかしい?
|