CASE WHEN в SQL Server

SET @Result = @KriteriumTekst + CASE @Operator WHEN 'LT' THEN '<' WHEN 'GT' THEN '>' WHEN 'NE' THEN '<>' WHEN 'EQ' THEN '=' + @Verdi + CASE @Tilstand WHEN 'OG' THEN 'AND' WHEN 'ELLER' THEN 'OR' 

Это утверждение не компилируется, что может быть проблемой.

Вы мистизируете END выражений CASE :

  SET @Result= @KriteriumTekst+CASE @Operator WHEN 'LT' THEN '<' WHEN 'GT' THEN '>' WHEN 'NE' THEN '<>' WHEN 'EQ' THEN '=' END [email protected]+ CASE @Tilstand WHEN 'OG' THEN 'AND' WHEN 'ELLER' THEN 'OR' END 

Как отмечалось в комментариях, ваши дела должны быть прекращены с помощью END

Кроме того, если @Operator – «LT», а @Tilstand – «OG», вы получите результат, который выглядит

 @KriteriumTekst + '<' + @Verdi + 'OG' 

Учитывая значения @KriteriumTekst и @Verdi , вы можете получить что-то вроде

 @Result = '1<5OG' 

Трудно понять, что вы хотели бы сделать с этой строкой.

Вам необходимо прекратить действие case:

 SET @Result= @KriteriumTekst+CASE @Operator WHEN 'LT' THEN '<' WHEN 'GT' THEN '>' WHEN 'NE' THEN '<>' WHEN 'EQ' THEN '=' END [email protected]+ CASE @Tilstand WHEN 'OG' THEN 'AND' WHEN 'ELLER' THEN 'OR' END 

Для каждого CASE требуется ключевое слово END ( ссылка MSDN ):

 declare @result nvarchar(256) declare @KriteriumTekst nvarchar(256) declare @Operator nvarchar(256) declare @Verdi nvarchar(256) declare @Tilstand nvarchar(256) set @KriteriumTekst = 'Tekst ' set @Operator = 'LT' set @Verdi = 'Verdi ' set @Tilstand = 'OG' SET @Result= @KriteriumTekst+CASE @Operator WHEN 'LT' THEN '<' WHEN 'GT' THEN '>' WHEN 'NE' THEN '<>' WHEN 'EQ' THEN '=' END [email protected]+ CASE @Tilstand WHEN 'OG' THEN 'AND' WHEN 'ELLER' THEN 'OR' END select @result 
Interesting Posts
Давайте будем гением компьютера.