sql server-FALL: Fehler beim konvertieren von Datentyp varchar float

Ich versuche, fügen Sie eine Spalte dynamisch in meiner Abfrage.

Bin ich mit der folgenden Abfrage:

DECLARE @detMethod varchar(20) = 'MAX(cov)';

WITH myTable as (
                  SELECT user1, (SELECT CASE @detMethod
                                           WHEN 'MAX(cov)' THEN MAX(cov)
                                           ELSE MAX(pcc*cov)
                                        END 
                                ) as method
                  FROM ....
                  WHERE ....
                )

/* some task on myTable */

Es ist mir ein Fehler in dieser Zeile:

SELECT user1, (SELECT CASE @detMethod

Error converting data type varchar to float.

Eine mögliche Alternative ist die Verwendung von dynamischem sql, und speichern Sie die gesamte Abfrage in einem string, und führen Sie dann mithilfe von sp_executesql. Aber was genau ist falsch an diesem code?

Edit: Der code ist in Ordnung, der Fehler war weiter unten in der query in der FROM-Klausel where-ich hatte nicht eingeschlossen @detMethod innerhalb der CASE-block. Die Fehler-Zeilennummer, es war mir war die erste Zeile der abgeleiteten Tabelle.

InformationsquelleAutor SaadH | 2014-05-12
Schreibe einen Kommentar