繁体   English   中英

SQL查询存储过程错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM