Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите пожалуйста с UPDATE  [new]
cglcz
Member

Откуда:
Сообщений: 33
Задача такова:
Обновить значение salary в таблице employees установив заработные платы для
сотрудников по следующим правилам:
Если итоговая выручка за последний год составляет от 10000 и более - удвоить текущее
значение.

Я пишу:
UPDATE employees
SET salary = salary * 2 
        WHERE EXISTS   (SELECT e.first_name, sum (amount) as total_amt, YEAR (CAST (sales_time AS DATE)) AS SALES_DATE
						FROM sales s join employees e on s.employee_id = e.id
						GROUP BY e.first_name, YEAR(CAST(sales_time AS DATE))
						having  YEAR(CAST(sales_time AS DATE)) = 2017
						AND sum (amount) > 10000)	


и у меня обновляются зарплаты не тех двух человек, которые выбираются в этом селекте, а всех что есть. Где моя ошибка?

Сообщение было отредактировано: 13 май 18, 21:16
13 май 18, 21:08    [21406681]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с UPDATE  [new]
cglcz
Member

Откуда:
Сообщений: 33
cglcz,
так тоже не работает

UPDATE employees
SET salary = 
       CASE
	   WHEN   EXISTS   (SELECT e.first_name, sum (amount) as total_amt, YEAR (CAST (sales_time AS DATE)) AS SALES_DATE
						FROM sales s join employees e on s.employee_id = e.id
						GROUP BY e.first_name, YEAR(CAST(sales_time AS DATE))
						having  YEAR(CAST(sales_time AS DATE)) = 2017
						AND sum (amount) > 10000)	

						THEN salary * 2 
		                END


Сообщение было отредактировано: 13 май 18, 21:16
13 май 18, 21:11    [21406687]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с UPDATE  [new]
aleks222
Member

Откуда:
Сообщений: 849
Дык, у тя условие exists не связано с конкретной строкой таблицы employees.
14 май 18, 06:31    [21406984]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить