Совокупность может не отображаться в предложении WHERE (MSSM studio) - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь создать триггер для вставки в таблицу объявлений. При попытке написать этот курсор

declare Users cursor for 
    Select "User".IDUser, Sum(Price)   
    from "User"
    inner join Purchase as pu on "User".IDUser = pu.IDUser  
    inner join PurchaseProduct as pp on pu.IDPurchase = pp.IDPurchase
    inner join Product as pr on pp.IDProduct = pr.IDProduct
    inner join inserted on pr.IDProduct = inserted.IDProduct
    where pr.ProductType = (select ProductType 
                            from Product
                            inner join Advertisement on Product.IDProduct = Advertisement.IDProduct
                            inner join inserted on Advertisement.IDProduct = inserted.IDProduct
                            where Advertisement.IDAdvertisement = inserted.IDAdvertisement)
      and Sum(Price) > 50;

Я получаю эту ошибку

Сообщение 147, уровень 15, состояние 1, процедура AutomaticUserAdvertScoreCalculation, строка 15 [Batch Start Line 113]
Агрегат может не отображаться в предложении WHERE, если он не входит в подзапрос, содержащийся в предложении HAVING или списке выбора, а агрегируемый столбец является внешней ссылкой.

В чем здесь может быть ошибка? Ниже вы можете увидеть мою структуру БД

ER of DB

Заранее спасибо

1 Ответ

0 голосов
/ 06 мая 2018

Вы можете использовать HAVING для фильтрации строк после агрегирования:

declare Users cursor for 
Select "User".IDUser, Sum(Price) from "User"
join Purchase as pu on "User".IDUser = pu.IDUser  
join PurchaseProduct as pp on pu.IDPurchase = pp.IDPurchase
join Product as pr on pp.IDProduct = pr.IDProduct
join inserted on pr.IDProduct = inserted.IDProduct
where pr.ProductType = (select ProductType from Product
              join Advertisement on Product.IDProduct = Advertisement.IDProduct
              join inserted on Advertisement.IDProduct = inserted.IDProduct
              where Advertisement.IDAdvertisement = inserted.IDAdvertisement)
GROUP BY "User".IDUser
HAVING Sum(Price) > 50;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...