2013-03-17 10 views
0

У меня есть заявлениеоператор Update на основе выбора

update Clients 
set StatusID= 4 
from (select c.clientid 
from Clients c 
where CategCode = 'CH' and StatusID in (1,2,6) and DATEDIFF(YEAR,dob,GETDATE())>5) 

он бросает меня ошибки

Msg 102, Level 15, State 1, Line 5 
Incorrect syntax near ')'. 

вы видите, что может вызвать эту ошибку?

Я пытался использовать это заявление, но установить статус 4 для всех клиентов

update Clients 
set StatusID= 4 
WHERE EXISTS( 
select clientid,DOB,DATEDIFF(YEAR,dob,GETDATE()) 
from Clients 
where CategCode = 'CH' and StatusID in (1,2,6) and DATEDIFF(YEAR,dob,GETDATE())>5 

ответ

1

Попробуйте

update c 
set c.StatusID= 4 
from Clients c 
where CategCode = 'CH' and StatusID in (1,2,6) 
and DATEDIFF(YEAR,dob,GETDATE())>5 

Ваш 2-й запрос должен быть

update c 
set StatusID= 4 
from Clients c 
WHERE EXISTS( 
select 1 
from Clients x 
where CategCode = 'CH' and StatusID in (1,2,6) and x.clientid = c.clientid) 
+0

метания ошибку 'Msg 156, уровень 15, состояние 1, строка 2 Неверный синтаксис рядом с ключевым словом 'set'.' – Andrey

+0

check updat ed ответ –

+0

не распознают эту часть 'x.clienid = c.cliendid' – Andrey

Смежные вопросы