Vue SQL Select Statement – convertir en décimal où null

Comment puis-je créer une instruction select pour une vue et à l'intérieur de celle-ci, convertir le type de données de la colonne OverallSat de nvarchar (10) en un nombre décimal (10,2) uniquement lorsque les valeurs ne sont pas nulles. Crystal Reports a des difficultés avec cette colonne. Déclaration actuelle

SELECT [BPF_FR_ID] ,[ResolveDate] ,[Organization] ,[AssigneeGroup] ,[Survey_Category] ,[HDATechComp] ,[TechComp] ,[ProfCourt] ,[Timeliness] ,[OverAllSat] ,[KeySent] ,[CheckSave] ,[TicketNumber] ,[Form] FROM [NotesData].[dbo].[BPF_FinanceReport_tbl] 

Je cherche à replace la valeur de [OverAllSat] par quelque chose comme ça …

 Select OverAllSat, Case When IsNumeric(OverAllSat)<>0 THEN CONVERT(nvarchar(10),CONVERT(decimal(10,2),OverAllSat)) ELSE OverAllSat End as OverAllSat From [NotesData].[dbo].[BPF_FinanceReport_tbl] 

Est-ce possible à travers un critère de sélection de vue, ou doit-il être ailleurs (sortinggger sur insert / update). tous les exemples sont grandement appréciés. Je vous remercie!

Vous pouvez utiliser ISNULL()

 Select OverAllSat, Case When IsNumeric(ISNULL(OverAllSat,0)) = 1 THEN CONVERT(decimal(10,2),OverAllSat) ELSE CONVERT(decimal(10,2),ISNULL(OverAllSat,0)) End as OverAllSat1 From [NotesData].[dbo].[BPF_FinanceReport_tbl] 

Ou si vous êtes vraiment ssortingct sur la façon dont il ne doit pas être nul alors vous devez l'append à votre condition de cas.

 Select OverAllSat, Case When OverAllSat IS NOT NULL AND IsNumeric(OverAllSat) = 1 THEN CONVERT(decimal(10,2),OverAllSat) When OverAllSat IS NOT NULL THEN CONVERT(decimal(10,2),OverAllSat) ELSE 0 End as OverAllSat1 From [NotesData].[dbo].[BPF_FinanceReport_tbl] 

Vous devrez séparer cela en deux colonnes. Un qui est décimal (10,2) et l'autre qui est varchar (10). Ce type de tâche de mise en forme doit être laissé à votre couche de présentation si possible.