在 SQL Server 中将字节转换为具有精确小数的 GB

Raj*_*yer 1 sql t-sql sql-server

前 2 列的数据以字节为单位。我正在尝试将其从字节转换为 GB。由于某种原因,它没有在自由空间列中正确反映

    select vmi.VMTotalMaxSize, vmi.VMTotalSize, 
CONVERT(decimal(10,2),vmi.VMTotalMaxSize/1024/1024/1024) as [VMTotalMaxSize (GB)],
CONVERT(decimal(10,2),vmi.VMTotalSize/1024/1024/1024) as [VMTotalSize (GB)],
CONVERT(decimal(10,2),(vmi.VMTotalMaxSize-vmi.VMTotalSize)/1024/1024/1024) as [VMFreeSpace (GB)]
from tbl_WLC_VMInstance vmi

VM Total Max Size:375809638400, 268435456000, 214748364800
VMTotalSize: 375683809280, 62755176448, 74662805504
VMTotalMaxSize (GB): 350.00, 250.00, 200.00
VMTotalSize (GB):349.00, 58.00, 69.00   
VMFreeSpace (GB)0.00, 191.00, 130.00
Run Code Online (Sandbox Code Playgroud)

最好能得到经过正确计算的数据。谢谢

小智 7

除以 1024.0,而不是 1024 - 否则,您的结果将转换为整数,从而失去小数精度。