2017-08-28 9 views
1

以下のスクリプトを使用してテーブルから数値を取り出し、値に基づいて丸めます。数字が15を超える場合は、小数点以下1位まで四捨五入します。数字が15を下回っている場合は、小数点以下3桁まで四捨五入します。この数式は15を超える数に作用していますが、値全体に「.0」を付けません。私はアクセスがこれをしないと思う。私は正しい?これを行うより良い方法があれば教えてください。私の丸め式はオフですか?

SELECT Tbl_Formulas.QtyPer 
    , Round([QtyPer],IIf([QtyPer]<=15,3,1)) AS Expr1 
FROM Tbl_Formulas; 
+0

プレゼンテーションと値の差があります。 '.0'はプレゼンテーションです。 '.0'は重要でない値なので、それは正常に提示されません。 '.0'を表示するには、フォーマットマスクを使用して、表示する方法の値を提示する必要があります。詳細はhttps://msdn.microsoft.com/en-us/library/office/jj720239.aspx – xQbert

+0

ありがとうございますが、SQLステートメントの作成にはそれほど偉大ではない人にとって、私は少し迷っていますこれに。私は表現を書くのに優れているかのように文を使用しました。その後、私はSQLにヒットし、この投稿のステートメントをコピーしました。しかし、助けてくれてありがとう。 –

+0

これを見てください:https://www.techonthenet.com/access/functions/string/format.php私はあなたが望むと思います: 'FORMAT(Round([QtyPer]、IIf([QtyPer] <= 15 、3,1))、 "#、## 0.000")、ラウンドは値を変更します。フォーマットがどのように表示されるかが変わります。それは常に3小数を表示します... – xQbert

答えて

1

あなたも、整数値の0.0または0.000を表示するためにフォーマットを使用することができます。

SELECT 
    Tbl_Formulas.QtyPer, 
    Format([QtyPer], IIf([QtyPer]<=15, "0.000", "0.0")) AS Expr1 
FROM Tbl_Formulas; 
+0

私はQbertのおかげでこれを理解するのにとても近かったです。私はすべての数字を一方向にどのようにフォーマットするかを理解し、それらを分離するためにIIFステートメントを作成していました。ありがとうグスタフ! –