選択列の数字の書式設定に問題があります。FORMATを使用しましたが、機能しません。これが私のコラムです:
sum(cast(datediff(second, IEC.CREATE_DATE, IEC.STATUS_DATE) as float) / 60) TotalSentMinutes
私はこれを使用しました:
FORMAT(sum(cast(datediff(second, IEC.CREATE_DATE, IEC.STATUS_DATE) as float) / 60),2) TotalSentMinutes
エラー:
'format'は認識される組み込み関数名ではありません。
この計算をフォーマットするにはどうすればよいですか?
これを試してください-
DECLARE @i FLOAT = 6.677756
SELECT
ROUND(@i, 2)
, FORMAT(@i, 'N2')
, CAST(@i AS DECIMAL(18,2))
, SUBSTRING(PARSENAME(CAST(@i AS VARCHAR(10)), 1), PATINDEX('%.%', CAST(@i AS VARCHAR(10))) - 1, 2)
, FLOOR((@i - FLOOR(@i)) * 100)
出力:
----------------------
6,68
6.68
6.68
67
67
これをDECIMALにキャストし、スケールを2桁に指定できます
だから、のようなもの
DECLARE @i AS FLOAT = 2
SELECT @i / 3
SELECT CAST(@i / 3 AS DECIMAL(18,2))
ただし、これはUI /レポートレイヤーで行うことをお勧めします。これにより、精度が低下するためです。
(私の意見では)フォーマットはUI /レポート/表示レベルで行われるべきです。
結果を数値にキャストしてみてください
CAST(sum(cast(datediff(second, IEC.CREATE_DATE, IEC.STATUS_DATE) as float) / 60)
AS numeric(10,2)) TotalSentMinutes
入力
1
2
3
出力
1.00
2.00
3.00
だから、のようなもの
DECLARE @i AS FLOAT = 2
SELECT @i / 3
SELECT CAST(@i / 3 AS DECIMAL(18,2))
ただし、これはUI /レポートレイヤーで行うことをお勧めします。これにより、精度が低下するためです。
DECLARE @i AS FLOAT = 2 SELECT @i/3 SELECT cast(@i/cast(3 AS DECIMAL(18,2))as decimal(18,2))
因子と結果の両方で、キャストを小数と見なす必要があります。