我有以下代码
IF EXISTS(SELECT @FunderID
FROM dbo.FunderCharityTbl
WHERE @ContributionAmount > ( ( sum(TotalContributions) / 100 ) *10 ))
BEGIN
RAISERROR ('Sorry contribution is refused limit is breached', 16,1)
RETRUN 99
END
我收到以下错误
消息147,级别15,状态1,过程InsertContribution,第33行
除非聚集在HAVING子句或选择列表中包含的子查询中,并且聚集的列是外部引用,否则聚集可能不会出现在WHERE子句中。
我想做的是检查@contributionAmount
(输入的金额)是否大于输入的人员先前所有贡献的10%,funderID
并且是否发送了错误消息
我是SQL的新手,我想知道为什么您不能以编写If Exists
语句的方式编写该语句,并且需要采取什么措施来纠正此错误,并使我的过程以与所需方式相同的方式执行。
您不能在WHERE
子句中使用Aggregate函数,但可以在HAVING
子句中使用它
IF EXISTS( SELECT 1 --@FunderID
FROM dbo.FunderCharityTbl
HAVING @ContributionAmount > ((sum(TotalContributions)/100)*10)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句