2017-02-17 122 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]是float列。如果是其他類型,則必須適當修改呼叫CONVERT()

+0

[性能分數]是一個int的列 –

+0

喜添, 我想表現的分數,因爲只有一個int,即 第一種情況下應該給「新國家」 fullfilling條件 第二應情況後只給出Performance_Score(這是一個數值) 否則它會給'沒有找到歷史數據' 請幫忙 –

+0

@SandhyaNegi您不能將文本和純數字混合爲同一個「CASE」表達式的輸出。我試圖做的一點是你可以顯示數字,但你需要先將它們轉換爲文本。 –

相關問題