Ich versuche, eine dynamische Reihenfolge in einer gespeicherten Prozedur zu verwenden, damit ich die Reihenfolge übergeben kann, die die Daten in der gespeicherten Prozedur als Parameter zurückgegeben werden soll. Dies funktioniert für VARCHAR Felder jedoch in Ordnung, wenn ich versuche, den Code ein int oder Datetime-Feld es Fehler zu sortieren I haben alsDynamische SQL Server-Reihenfolge von
DECLARE @ORDERBY INT
SET @ORDERBY = 1
SELECT TOP 10 * FROM TBL_LMS_USERS_RECORDs_LAST_ATTEMPT
ORDER BY
CASE
WHEN @OrderBy = 1 THEN s10_record_dow
--WHEN @OrderBy = 2 THEN pk_big_record_id
else s10_record_dow
END
folgt Wenn ich die zweite, wenn sie im Fall Aussage es Fehler mit
Kommentar-"Fehler beim Konvertieren des Datentyps varchar in bigint."
Ich kann durch dieses Feld gut bestellen, wenn ich die case-Anweisung nicht verwende.
Irgendwelche Ideen?
Dank, die aus Interesse scheint zu funktionieren, warum es ok funktioniert, wie ich es mit VARCHAR hatte aber um INT oder andere Datentypen zu verwenden, ich habe um es so zu haben? – Gavin
Alle Felder im Fall müssen auf den gleichen Datentyp ausgewertet werden. Wenn jedoch alle Felder in Ihrer Liste in einen einzelnen Datentyp konvertiert werden können, sollten Sie in der Lage sein, eine einzelne Case-Anweisung zu verwenden, wenn Sie die Datenspalten umwandeln zu diesem Datentyp im Case –