Ошибка в хранимой процедуре MS SQL
Необходимо написать хранимую процедуру, которая увеличивает комиссионные у тех продавцов, сумма продаж которых превышает среднюю сумму продаж всей компании. В написанной мной процедуре отображается ошибка (Не удалось привязать составной идентификатор "a.sum_zakaz".) Помогите пожалуйста разобраться, что является причиной данной ошибки? Скрипт:
create procedure comis_plus
@value decimal
as
update prodavec
set comis_prod=comis_prod+@value
where avg(a.sum_zakaz)<(select sum(a.sum_zakaz)
from zakaz a, prodavec b
where a.id_prod=b.id_prod)
Ответы (2 шт):
Автор решения: S.H.
→ Ссылка
Мне кажется - я не проверял - что поменять надо вот что:
where avg(zakaz.sum_zakaz)<(select sum(a.sum_zakaz)
from zakaz a, prodavec b
where a.id_prod=b.id_prod)
То есть, синоним a для zakaz относится только к выражению в скобках
Автор решения: Aziz Umarov
→ Ссылка
Так сделайте, у вас обновляется продавец но нет условий на фильтрацию с этой таблицей
create procedure comis_plus
@value decimal
@avgsum decimal
as
-- вычислите среднюю сумму продаж всей компании
SELECT @avgsum = avg(sum_zakaz) FROM zakaz
-- далее имея значение можно не извращяться запросами
update zakaz
set comis_prod=zakaz.comis_prod+@value
where zakaz.id_prod in (select a.id_prod
from zakaz a, prodavec b
where a.id_prod=b.id_prod
GROUP BY a.id_prod
having @avgsum < sum(a.sum_zakaz)
)
UPD.Изменил процедуру добавил коментариев