Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql group by子句错误_Sql_Sql Server_Stored Procedures - Fatal编程技术网

sql group by子句错误

sql group by子句错误,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,这就是错误所在 Msg 8120,16级,状态1,更新后的程序,第10行 列“TopicsComplete.TopicCreationDate”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中 这是在添加这两行之后,我需要计算一个单独的表行(行的数量不是topicid的数量),并在结果中包含任何想法?谢谢 ,COUNT(DISTINCT MC.topicid) AS NewMessagesCount LEFT OUTER JOIN Messages AS MC ON MC.To

这就是错误所在

Msg 8120,16级,状态1,更新后的程序,第10行
列“TopicsComplete.TopicCreationDate”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中

这是在添加这两行之后,我需要计算一个单独的表行(行的数量不是
topicid
的数量),并在结果中包含任何想法?谢谢

,COUNT(DISTINCT MC.topicid) AS NewMessagesCount

LEFT OUTER JOIN Messages AS MC ON MC.TopicId = T.TopicId AND MC.userid = @id

@id int = null
,@UserGroupId int = null
AS
SELECT
*
FROM
(SELECT
ROW_NUMBER()
        OVER ( ORDER BY TopicOrder desc
                  , CASE WHEN M.MessageCreationDate > T.TopicCreationDate 
                        THEN M.MessageCreationDate
                        ELSE T.TopicCreationDate
                    END desc )
    AS RowNumber,
T.TopicId, T.TopicTitle, T.TopicShortName, T.TopicDescription, T.TopicCreationDate, T.TopicViews, T.TopicReplies, T.UserId, T.TopicTags, T.TopicIsClose, T.TopicOrder, T.LastMessageId, T.UserName, M.MessageCreationDate, T.ReadAccessGroupId, T.PostAccessGroupId, U.UserGroupId, U.UserPhoto, T.UserFullName ,M.UserId AS MessageUserId ,MU.UserName AS MessageUserName
,COUNT(DISTINCT MC.topicid) AS NewMessagesCount

FROM            TopicsComplete AS T  
                 LEFT OUTER JOIN Messages AS M ON M.TopicId = T.TopicId AND M.MessageId = T.LastMessageId AND M.Active = 1  
                 LEFT OUTER JOIN Messages AS MC ON MC.TopicId = T.TopicId AND MC.userid = @id
                 INNER JOIN Users AS U ON U.UserId = T.UserId
LEFT JOIN Users MU ON MU.UserId = M.UserId

WHERE   EXISTS
(SELECT  * FROM    TopicsComplete
                   LEFT OUTER JOIN Messages AS M ON M.TopicId = T.TopicId AND M.MessageId = T.LastMessageId AND M.Active = 1 INNER JOIN
                   topicfollows AS TF ON T.TopicId != TF.topicid INNER JOIN
                   Users AS U ON U.UserId = T.UserId LEFT OUTER JOIN
                   Users AS MU ON MU.UserId = M.UserId
                   WHERE        (T.UserId = @id)

UNION SELECT  * FROM    TopicsComplete
                        LEFT OUTER JOIN Messages AS M ON M.TopicId = T.TopicId AND M.MessageId = T.LastMessageId AND M.Active = 1 INNER JOIN
                        topicfollows AS TF ON T.TopicId = TF.topicid INNER JOIN
                        Users AS U ON U.UserId = T.UserId LEFT JOIN 
                        Users MU ON MU.UserId = M.UserId
                        WHERE        (TF.userid = @id)
      )
) T

您需要在
GROUP BY
子句中包含聚合中未包含的任何列(max、min、count、sum等)。

当您在
select
中具有聚合函数时,SQL Server相当合理地假设您要进行聚合。所有不在聚合函数中的列都应该在
group by
子句中

在本例中,在
select
表达式中将
COUNT(DISTINCT MC.topicid)作为newmessagescont
。所有其他列都应位于
分组依据中
。没有
分组依据
,但您仍然会收到错误,因为应该有一个