SQL-запрос с оператором CASE - PullRequest
       2

SQL-запрос с оператором CASE

0 голосов
/ 09 декабря 2011

Я все еще много узнаю о SQL-запросах, но застрял на этом. Я понимаю, что мог бы разбить этот запрос на два запроса, чтобы получить желаемую функциональность, но я хотел бы сделать это в одном, если это возможно. Моя проблема заключается в предложении Case. У меня есть условие, если столбцы входа и выхода находятся между выбранным диапазоном дат, я хочу сделать myColumnValue + .5, иначе оставить его. myColumnValue является двойным. Проблема в том, что когда я добавляю «myColumnValue + некоторую константу» к предложению THEN и Else, это делает обновление теперь действующим на строку, но когда я удаляю его и в нем есть только константы ... оно работает нормально. Я использую SQL Server 2008. Я знаю, что, возможно, мне не хватает некоторой части запроса, где я должен повторно инициализировать myColumnValue как переменную, но я не уверен, как это сделать. Если кто-то может дать мне какое-то указание, если оставить это в одном запросе, или если есть более простой способ сделать это без дел, любые рекомендации будут с благодарностью. Заранее спасибо.

UPDATE myTableName
SET myColumnValue= 
(CASE 
WHEN((In <= '12/1/2011' ) AND (Out >= '12/7/2011' )) 
THEN(myColumnValue + .5 )
ELSE(myColumnValue) 
END)  
WHERE ID = 'someIndex'

1 Ответ

4 голосов
/ 09 декабря 2011

Правильный путь - это перенести условие case в предложение where:

UPDATE myTableName
   SET myColumnValue=myColumnValue + .5
 WHERE ID = 'someIndex'
   AND ([In] <= '12/1/2011' ) 
   AND ([Out] >= '12/7/2011' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...