[英]SQL Query Stored Procedure Errors
我正在创建一个电子商务基准网站。 我的GETSITES存储过程中有一些问题:
码:
CREATE PROC USER_S_GETSITES
@CategoryID int,
@List int,
@IsPopular bit,
@MaxID int,
@Status bit,
@Word text
AS
SELECT s.*, c.*, AVG(r.Rate) AS RateAVG, Count(r.ID) AS RateCount
FROM Sites AS s
INNER JOIN Rates AS r ON r.SiteID = s.ID
INNER JOIN Categories AS c ON c.ID = s.CategoryID
WHERE (@CategoryID is NULL) OR s.CategoryID = @CategoryID
AND (@MaxID is NULL) OR s.ID < @MaxID
AND (@Status is NULL) OR s.Status = @Status
AND r.Status=1
AND (@Word is NULL) OR s.Name LIKE @Word OR s.Description LIKE @Word
AND (@IsPopular is NULL) OR s.IsPopular=@IsPopular
ORDER BY
CASE @List WHEN 1 THEN s.ID END ASC,
CASE @List WHEN 2 THEN s.ID END DESC,
CASE @List WHEN 3 THEN RateAVG END DESC,
CASE @List WHEN 4 THEN RateCount END DESC
和我的问题:
消息8120,级别16,状态1,过程USER_S_GETSITES,第9行
选择列表中的“ Sites.ID”列无效,因为它既不包含在聚合函数中也不在GROUP BY子句中。
消息207,级别16,状态1,过程USER_S_GETSITES,第23行
无效的列名“ RateAVG”。
消息207,级别16,状态1,过程USER_S_GETSITES,第24行
无效的列名“ RateCount”。
我无法解决这些问题。 我该怎么办?
错误1:在GROUP BY
子句中包含Sites.ID
列,例如group by Sites.ID, ....
错误2: CASE @List WHEN 3 THEN AVG(r.Rate) AS RateAVG END DESC
错误3: CASE @List WHEN 4 THEN Count(r.ID) AS RateCount END DESC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.