具有分组错误的SQL查询

时间:2014-06-09 14:03:20

标签: sql sql-server tsql

我有一个查询,我正在运行以返回我的工具的一些统计信息。目前它正在返回所有信息,但我最近添加了一个新列,以便能够按位置获取总数,这就是我被困住的地方。

以下是我的询问:

 SELECT   B.[segmentName],
                 count(A.[segmentID]) AS total,
                 A.[meetingID],
                 C.[center]
        FROM     Focus_Meetings_Segments AS A
                 INNER JOIN
                 Focus_Segments AS B
                 ON A.[segmentID] = B.[id]
                 JOIN Focus_Meetings as C
                 ON C.[id] = A.[meetingID]
        WHERE C.[center] = @location
        GROUP BY A.[segmentID], B.[segmentName]
        ORDER BY total DESC
        FOR      XML PATH ('segment'), TYPE, ELEMENTS, ROOT ('root');

新添加的列为center到Focus_Meetings表。

我得到的错误是meetingID不包含在聚合或group by子句中。

是否有另一种方法来编写此查询,以便我可以运行它?

3 个答案:

答案 0 :(得分:1)

更改GROUP BY A.[segmentID], B.[segmentName]

GROUP BY B.[segmentName], A.[meetingID], C.[center]

答案 1 :(得分:0)

在查询中使用GROUP BY时,应该聚合选择列表中的所有字段,或者按列表列出。

您必须聚合A.[meetingID], C.[center](使用聚合函数,如SUM,COUNT,MIN,AVG等),或者您必须在GROUP BY子句中列出它们。

答案 2 :(得分:0)

使用聚合函数(如SUMAVG)时,聚合函数未使用的所有列必须位于GROUP BY列列表中