2011-11-24 101 views
2

这个查询返回它下面的列表,但是ids出现多次,我可以分组ids并加起来所有的戏剧,所以我只是得到一个列表唯一ID与它旁边的戏剧总数。这是可能的SQL?sql server分组结果

SELECT [fkPlayerId],[plays] 
FROM [dPlaysPerDay] 
INNER JOIN dWinners 
ON [dPlaysPerDay].[fkPlayerId]=dWinners.[pkWinnerId] 

53693 1 
53695 1 
53696 1 
53693 1 
53692 2 
53698 2 
53697 1 
53699 2 
53698 3 
53693 6 
53699 2 
53693 2 
53700 2 
53698 1 

回答

6

当使用GROUP BY,在SELECT的所有数据项,必须被包括在GROUP BY或放置在Aggregate Function

因此,fkPlayerId应进行分组,并与SUM()功能

SELECT [fkPlayerId], SUM([plays]) 
FROM [dPlaysPerDay] 
INNER JOIN dWinners ON [dPlaysPerDay].[fkPlayerId]=dWinners.[pkWinnerId] 
GROUP BY fkPlayerId 

ORDER BY聚合函数使用plays,给这个数据项的别名,订购:

SELECT [fkPlayerId], SUM([plays]) as TotalPlays 
FROM [dPlaysPerDay] 
INNER JOIN dWinners ON [dPlaysPerDay].[fkPlayerId]=dWinners.[pkWinnerId] 
GROUP BY fkPlayerId 
ORDER BY TotalPlays 
+0

很酷谢谢curt!我可以通过第二次订购吗?我知道你可以使用[专栏名称]的顺序,但在这里我们得到一个没有名字的coulmn? – user987723

+0

你当然可以!看我的编辑 – Curt