ここには 2 つの問題があります。
まずは丸めです。Round
これは、SQL の関数を使用して簡単に実行できます。
SELECT Round(8660.125, 2);
-- returns 8660.130
2 つ目は、ご覧のとおり、これでも小数点以下 3 桁が返されることです。これはデータ型によるものです。丸められた値を取得しましたが、まだ余分な桁が表示されています。
次の方法で修正できます。
SELECT Convert(decimal(16, 2), 8660.125);
--returns 8660.13 by implicitly rounding--you could round first but not needed
ただし、上記の 2 つの値は数値的には同じです。私の意見では、SQL Server 側でプレゼンテーションを扱うべきではありません。小数点以下 2 桁が必要な場合は、SSRS レポートでセルの形式を に設定するだけです#.00
。これにより、必要な (四捨五入された) 小数点以下の桁数が得られます。必要な機能はありません。単純なプロパティです。
日付についても同じ原則です。日付の基になる値は単なる数値です。しかし、ユーザーに日付を表示する方法は無数にあります。長い名前を付けたり、パーツの順序を変えたり、区切り文字を変えたりします。日付形式を変更するたびに、SQL に戻ってConvert()
スタイルを変更しますか?
レポート内のこれらの数値のフォント、色、サイズ、パディング、スタイル、位置、または可視性が SQL Server によって決定されるとは考えていません。これらもすべて設計時に手動で設定する必要があります。では、値の表示方法 (値が完全に等しい場合) が異なるのはなぜでしょうか? 私の意見では、これを SQL クエリに押し込むと、問題の領域が間違った場所に移動します。それは、そこにある必要のないクエリに複雑さ (「インテリジェンス」ではない) を追加しています! また、セルの数値形式を「インテリジェンスの追加」に設定することもわかりません。
これはプレゼンテーションの問題なので、他のすべてのプレゼンテーション要素が扱われる適切な場所 (SSRS レポート) に保管してください。
アップデート
クエリで変換を実行したい 1 つのシナリオを考えることができます。それは、値がさらに多くの計算で使用され、その計算に関するビジネス ルールでそれが必要になる場合です。たとえば、銀行の利息を計算する場合、「ステップ 1 の後、小数点以下 4 桁に丸め、ステップ 3 の後、最後に小数点以下 2 桁 (ドルとセント) に丸める」などのルールを設定できます。しかし、それは別の話です。現在は、その表示だけでなく、値が重要になっています。