Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 case+update в чем ошибка?  [new]
Romanov-krd
Member

Откуда:
Сообщений: 122
select shop.zarabotok,

case
when shop.zarabotok<134000 then

UPDATE sotrudniki
set zarplata=zarplata-10000
where marketid in (select marketid
from shop where zarabotok<134000)

when shop.zarabotok>134000 then

UPDATE sotrudniki
set zarplata=zarplata+5000
where marketid in (select marketid
from shop where zarabotok>134000)

end as zpposle, sotrudniki.zarplata as zpdovicheta

from shop,sotrudniki

пишет Неправильный синтаксис около ключевого слова "UPDATE" но в чем ошибка не пойму.
28 авг 16, 19:26    [19600223]     Ответить | Цитировать Сообщить модератору
 Re: case+update в чем ошибка?  [new]
iljy
Member

Откуда:
Сообщений: 8711
Romanov-krd,

ошибка в том, что UPDATE - отдельный оператор и его нельзя использовать внутри SELECT, за исключением довольно специальных случаев с предложением OUTPUT.
28 авг 16, 19:52    [19600275]     Ответить | Цитировать Сообщить модератору
 Re: case+update в чем ошибка?  [new]
правильный проходящий.
Guest
Romanov-krd,
у вас не одна ошибка, а сразу несколько. Case - не оператор ветвления кода, а функция. И оперирует она скалярами, которые команда Update в принципе не возвращает. Отсюда следует, что вы написали полную синтаксическую чушь.
29 авг 16, 09:46    [19601142]     Ответить | Цитировать Сообщить модератору
 Re: case+update в чем ошибка?  [new]
SL8Behemoth
Member

Откуда:
Сообщений: 16
Romanov-krd,

Я бы написал так примерно:
Update s set zarplata = case when b.a > 134000 then zarplata + 5000 when b.a<134000 then zarplata - 10000 end from sotrudniki s
Outer apply (select ...... As a where.....) b
29 авг 16, 21:59    [19605123]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить