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.auch nach dem Konvertieren in varchar es Fehler geben: Fehlerdatentyp varchar Umwandlung zu schweben,

Ich weiß nicht, warum ich diese Störung erhalte.

+0

Verwenden Sie SQL Server? –

+0

Ja, ich bin mit SQL Server –

Antwort

1

Die Schwierigkeit, die Sie haben, liegt daran, dass SQL Server erfordert, dass alle möglichen Werte, die in einem CASE Ausdruck generiert werden, den gleichen Typ haben. Da Ihr ELSE Text verwendet, der nicht in einen numerischen Typ konvertiert werden kann, besteht die einzige Möglichkeit darin, die Zahlen in Text umzuwandeln.

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 

durch die Fehlermeldung gehen, gehe ich davon aus, dass hier [Performance Score] ein Schwimmersäule. Wenn es ein anderer Typ ist, müssten Sie den Aufruf an CONVERT() entsprechend ändern.

+0

[Performance Score] ist eine Int-Spalte –

+0

Hallo Tim, ich Spielpartitur als nur int wollen, dh der erste Fall sollte „New State“ geben, nachdem die Bedingung zweiten Fall fullfilling sollte Geben Sie nur Performance_Score an (was ein numerischer Wert ist) andernfalls wird 'No History Data Found' bitte help –

+0

@SandhyaNegi Sie können _text_ und reine Zahlen nicht als die Ausgabe des gleichen 'CASE'-Ausdrucks mischen. Der Punkt, den ich versuchte, ist, dass Sie Zahlen anzeigen können, aber Sie müssen sie zuerst in Text konvertieren. –