2016-07-11 7 views
-1

Я использую Microsoft SQL Management Studio и пытаюсь использовать CASE WHEN. Вот моя проблема, мой код, как показано ниже:CASE WHEN показывает ошибку

SELECT CASE WHEN INCIDENT_RK = 52377 
THEN CASE_RK = NULL 
ELSE CASE_RK 
END 
) 
FROM ABC ; 

То, что я хочу сделать, это, когда INCIDENT_RK это 52377, а затем установите CASE_RK в NULL еще следуют обратно оригинальный CASE_RK.

Это должно быть довольно прямолинейно, однако есть красные подчеркивания под INCIDENT_RK, =, ELSE,) Я нахожу это странным, потому что я сделал CASE КОГДА Сегодня сегодня он работает нормально. Ниже приводится рабочий код:

CASE WHEN CASE_RK NOT BETWEEN 1 AND 2    
     THEN CASE_RK+75961    
     ELSE CASE_RK     
     END    
     )  
FROM ABC  

нужны ваши советы

EDIT 2: Я также попытался следующий код, но до сих пор не повезло:

CASE WHEN INCIDENT_RK = '52080'    
     THEN NULL    
     ELSE CASE_RK     
     END AS CASE_RK 

     )  
FROM ABC 

EDIT 3: Я попробовал этот код ,

SELECT CASE WHEN INCIDENT_RK = 52080 THEN NULL ELSE CASE_RK END AS CASE_RK FROM ABC 

Окончательно можно выполнить. Тем не менее, у меня есть только 1 ряд INCIDENT_RK = 100, но есть более чем 50 CASE_RK установлено значение NULL

+1

Удалить эту нежелательную * закрывающую скобку * –

+0

Я попробовал этот код: ВЫБЕРИТЕ СЛУЧАЙ, КОГДА INCIDENT_RK = 52080 \t \t \t ТОГДА NULL \t \t \t \t ELSE CASE_RK \t \t \t \t END AS CASE_RK \t ОТ ABC \t \t \t \t Наконец можно выполнить. Тем не менее, у меня есть только 1 строка INCIDENT_RK = 100, но больше 50 CASE_RK установлено в NULL. Может кто-нибудь мне помочь? –

ответ

0

Удалены тесные брекеты,

SELECT CASE WHEN INCIDENT_RK = 52377 
THEN CASE_RK = NULL 
ELSE CASE_RK 
END 
FROM ABC; 
+0

Я попробовал этот код: SELECT, случай, когда INCIDENT_RK = 52080 \t \t \t ТОГДА NULL \t \t \t \t ELSE CASE_RK \t \t \t \t END AS CASE_RK \t ОТ ABC \t \t \t \t Наконец можно выполнить. Тем не менее, у меня есть только 1 строка INCIDENT_RK = 100, но больше 50 CASE_RK установлено в NULL. Может кто-нибудь мне помочь? –

+0

Если у вас несколько условий, отделите их, используя один «случай когда» с несколькими условиями «Тогда». Надеюсь, это понятно. – Lucky

1

Ваш синтаксис случай выглядит некорректным.

Случай возвращает заявление, оно не присваивает утверждение.
Обратите внимание на разницу между вашим примером, который работает и один, который не является то, что в одном, что не вы пытаетесь присвоить CASE_RK = NULL

Поэтому в зависимости от остальной части кода вашего запроса должно быть что-то по линии:

SELECT CASE WHEN INCIDENT_RK = 52377 
    THEN NULL 
    ELSE CASE_RK 
END AS CASE_RK  
FROM ABC  
+0

Я попробовал этот код: SELECT, случай, когда INCIDENT_RK = 52080 \t \t \t ТОГДА NULL \t \t \t \t ELSE CASE_RK \t \t \t \t END AS CASE_RK \t ОТ ABC \t \t \t \t Наконец можно выполнить. Тем не менее, у меня есть только 1 строка INCIDENT_RK = 100, но больше 50 CASE_RK установлено в NULL. Может кто-нибудь мне помочь? –

0

У вас есть некоторые недопустимые брекеты. Вы также не хотите устанавливать CASE_RK в NULL, вы просто хотите показать NULL.

SELECT CASE_RK = CASE WHEN INCIDENT_RK = 52377 
    THEN NULL 
    ELSE CASE_RK 
END 
FROM ABC; 
+0

Я попробовал этот код: SELECT, случай, когда INCIDENT_RK = 52080 \t \t \t ТОГДА NULL \t \t \t \t ELSE CASE_RK \t \t \t \t END AS CASE_RK \t ОТ ABC \t \t \t \t Наконец можно выполнить. Тем не менее, у меня есть только 1 строка INCIDENT_RK = 100, но больше 50 CASE_RK установлено в NULL. Может кто-нибудь мне помочь? –

0

В вашем запросе кажется неправильным синтаксисом. Вам нужно удалить теги из запроса. Пожалуйста, попробуйте ниже запрос:

SELECT CASE WHEN INCIDENT_RK = 52377 
THEN CASE_RK = NULL 
ELSE CASE_RK 
END 
FROM ABC;