2017-02-17 2 views
1
SELECT a.[Emp_No], 
     a.[Emp_Name], 
     a.[Band], 
     b.[Max_Exp] AS Max_Yrs_Experience, 
     CASE WHEN a.Performance_Score = 0 AND (a.Status_Active > 0 OR a.Status_New > 0) 
      THEN CONVERT(varchar, 0) 
      WHEN a.Performance_Score > 0 
      THEN [Performance_Score] 
      ELSE 'No History Data Found' 
     END AS Performance_Score 
INTO #EXPER 
FROM #PERFORMANCE a, #agg_exp b 
WHERE a.[Emp_No] = b.[Emp_No] 
ORDER BY Performance_Score DESC 

Error converting varchar to float.даже после преобразования его в VARCHAR он дает ошибку: Ошибка преобразования типа данных VARCHAR плавать,

Я не знаю, почему я получаю эту ошибку.

+0

Используете ли вы SQL Server? –

+0

Да Я использую SQL Server –

ответ

1

Сложность, которую вы испытываете, связана с тем, что SQL Server требует, чтобы все возможные значения, сгенерированные в выражении CASE, имели один и тот же тип. Поскольку ваш ELSE использует текст, который не может быть преобразован в любой числовой тип, единственным вариантом является преобразование чисел в текст.

CASE WHEN a.Performance_Score = 0 AND (a.Status_Active > 0 OR a.Status_New > 0) 
    THEN CONVERT (VARCHAR(10), 0)      -- zero as text 
    WHEN a.Performance_Score > 0 
    THEN CONVERT (VARCHAR(10), [Performance_Score]) -- performance score as text 
    ELSE 'No History Data Found'      -- this is already text 
END AS Performance_Score 

Идя сообщение об ошибке, я предполагаю, что здесь [Performance Score] столбец с плавающей точкой. Если это какой-то другой тип, вам необходимо соответствующим образом изменить вызов на CONVERT().

+0

[Оценка производительности] является Int столбец –

+0

Привет Тим, Я хочу, чтобы оценка производительности, как только междунар, т.е. первый случай должен дать «Новое государство» после того, как fullfilling условие 2-й случай должен дайте только Performance_Score (это числовое значение) , иначе оно будет выдано «Нет данных истории» , пожалуйста, помогите –

+0

@SandhyaNegi. Вы не можете смешивать текст и чистые числа в качестве вывода того же выражения 'CASE'. То, что я пытался сделать, это то, что вы _can_ отображаете числа, но вам нужно сначала преобразовать их в текст. –

Смежные вопросы