使用GROUP BY时出错

时间:2013-12-19 10:19:02

标签: sql-server

我收到以下错误:

Msg 8120,Level 16,State 1,Line 1 列'TempRH.utilisateur_id'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

执行以下查询时:

    SELECT MAX(TempRH.poids)as poids,TempRH.utilisateur_id  
    FROM TempRH 
    INNER JOIN (SELECT TempRH.utilisateur_id 
                FROM TempRH 
                GROUP BY TempRH.utilisateur_id
                HAVING COUNT(*)>2) t
    ON t.utilisateur_id =TempRH.utilisateur_id

请帮帮我。

3 个答案:

答案 0 :(得分:2)

尝试

SELECT * 
FROM(
    SELECT MAX(TempRH.poids)as poids,TempRH.utilisateur_id  
    FROM TempRH 
         INNER JOIN 
              (SELECT TempRH.utilisateur_id
               FROM TempRH 
               GROUP BY TempRH.utilisateur_id 
               HAVING COUNT(*)>2)t
         ON t.utilisateur_id =TempRH.utilisateur_id
    GROUP BY TempRH.utilisateur_id  
)x

答案 1 :(得分:0)

由于您使用的是Aggregate功能,因此您需要GROUP BY来自SELECT语句的任何其他列。添加

GROUP BY TempRH.utilisateur_id

到查询结尾将解决错误。

答案 2 :(得分:0)

由于您要与utilisateur_id一起选择Max(poids),因此您需要在外层提供一个分组。

有一点 - 如果你从一个看起来像是关键的表中加入同一个表,应该可以按如下方式简化你的查询:

SELECT MAX(TempRH.poids)as poids, TempRH.utilisateur_id  
    FROM TempRH 
    GROUP BY TempRH.utilisateur_id
    HAVING COUNT(*) > 2;