Verwenden einer Case-statement, um einen Parameter basierend auf einem anderen Parameter festzulegen

Ich versuche, eine SQL-Variable basierend auf dem numerischen Wert eines anderen SQL-Parameters, der in eine gespeicherte Prozedur übergeben wird, zu setzen, aber Schwierigkeiten mit der exakten Syntax der Case-statement zu haben

DECLARE @RangeText varchar(1) SELECT CASE WHEN (@SecondsOnSiteRange = 1) THEN SET @RangeText = '=' END WHEN (@SecondsOnSiteRange = 2) THEN SET @RangeText = '>' END WHEN (@SecondsOnSiteRange = 3) THEN SET @RangeText = '<' END ELSE NULL END 

Ich bin mir sicher, dass es etwas Kleine wie ein fehlendes Keyword oder so sein wird, aber wenn ich nach Google suche, scheint ich in der Lage zu sein, eine gleiche Variable zu setzen, nicht eine zweite.

Solutions Collecting From Web of "Verwenden einer Case-statement, um einen Parameter basierend auf einem anderen Parameter festzulegen"

Richtige Syntax :

 Simple CASE expression: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE expression: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END 

Code:

 DECLARE @RangeText varchar(1) SELECT @RangeText = CASE WHEN (@SecondsOnSiteRange = 1) THEN '=' WHEN (@SecondsOnSiteRange = 2) THEN '>' WHEN (@SecondsOnSiteRange = 3) THEN '<' ELSE NULL END 

oder:

 SELECT @RangeText = CASE @SecondsOnSiteRange WHEN 1 THEN '=' WHEN 2 THEN '>' WHEN 3 THEN '<' ELSE NULL END 

Du solltest nur Ende am Ende enden:

 SELECT CASE WHEN (@SecondsOnSiteRange = 1) THEN SET @RangeText = '=' ELSE WHEN (@SecondsOnSiteRange = 2) THEN SET @RangeText = '>' ELSE WHEN (@SecondsOnSiteRange = 3) THEN SET @RangeText = '<' ELSE ELSE NULL END 

Es tut mir sehr leid, dass die obige ist falsch. Ich habe übersehen, unten ist, wie es gemacht werden sollte …

 SELECT @RangeText = CASE WHEN (@SecondsOnSiteRange = 1) THEN '=' WHEN (@SecondsOnSiteRange = 2) THEN '>' WHEN (@SecondsOnSiteRange = 3) THEN '<' ELSE NULL END