Tengo una consulta de datos anexados, donde el valor original de la Manager_ID campo es de tipo varchar(250) valor = 31.0. Necesito convertir o convertir el valor a mostrar sólo '31" y eliminar todo después de la coma decimal. He intentado tanto, Convertir y Emitidos tanto a un entero o nvarchar, sin éxito. Sigo recibiendo el siguiente error:
Error de conversión al convertir el valor varchar '31.0' al tipo de datos int.
He jugado con los diferentes tipos de campo sin éxito, tanto en la inserción de la tabla y la tabla de datos.
Lo que me estoy perdiendo?
Gracias
Mensaje de Error para convert(int, convertir(decimal(9,2),[Manager_ID]))
Error de conversión de tipo de datos varchar numéricos.
INSERT IGNORE INTO [dbo].[tblUsers]
( [User_ID]
,[FirstName]
,[LastName]
,[FullName]
,[EMail]
,[UserRoles]
,[PostionType]
,[ManagerID]
,[UUID]
,[External_UUID]
,[home_Location_id]
,[Home_Organization_ID]
,[Record_types]
,[Location_Ceiling_ID]
,[Organization_Ceiling_ID]
,[Payroll_Identifier]
,[Created_Date]
,[Created_Time]
,[Update_Date]
,[Update_Time])
Select id-- User_ID
,first_name
,last_name
,full_name
,email
,role_id --UserRoles
,position --PositionType
,**cast(Manager_id as nvarchar(10)) as ManagerID**
,uuid
,external_uuid
,home_location_id
,home_organization_id
,[type] --Record_Types
,location_ceiling_id
,organization_ceiling_id
,payroll_identifier
,Left(Convert(varchar(20), created_at, 120),10) as Create_Date
,Right(convert(varchar(16), created_at, 120),5) as Create_Time
,left(Convert(varchar(20), updated_at, 120),10) as Update_Date
,Right(convert(varchar(16), updated_at, 120),5) as Update_Time
from [stg].[Users]
Solución Final
,SUBSTRING(manager_id, 1,
CASE WHEN CHARINDEX('.',manager_id) - 1 < 0
THEN LEN(manager_id)
ELSE CHARINDEX('.',manager_id) - 1 END) as ManagerID