Tengo una vista que debe devolver el tipo decimal para las columnas almacenadas como float.Convertir float a decimal en SQL Server 2008
puedo emitir cada columna a decimal de la siguiente manera:
, CAST(Field1 as decimal) Field1
El problema con este enfoque, es que por defecto decimales a 18,0, que se redondea automáticamente las columnas de flotación a 0. Me gustaría mantener una precisión de hasta 12 decimales.
Sin embargo, si hago esto:
, CAST(Field1 as decimal(12,12)) Field1
me sale un error de ejecución:
"Arithmetic overflow error converting float to data type numeric"
columna de flotación se define como longitud: 8 Precisión: 53 en la tabla. No puedo modificar nada sobre la mesa.
¿Cuál es la forma correcta de convertirlo en decimal sin perder precisión decimal?
Mi sugerencia es que dejes de almacenar datos como float ya que es un tipo de datos inexacto y obtendrás errores de redondeo si haces cálculos en él. – HLGEM