2015-02-06 49 views
0

我有两个表:总和查询收集

Fixture (id, homeId, awayId...) 
FixtureStats(id,playerId, teamOwnerId, rating, goals) 

我想表明的目标,为在该播放器属于每个球员和球队的目标都总和。

PlayerId TeamOwnerId Goals TeamGoals 
    1    2  0  9 
    2    2  1  9 
    3    2  3  9 
    4    2  5  9 
    5    3  0  12  

.... 

下面还是SQL查询缺少teamgoals

SELECT TOP (100) 
     PERCENT fs.teamownerid, 
     fs.playerid, 
     Count(f.id) AS Apps, 
     Sum(fs.goal) AS Goals 
FROM dbo.fixturestats AS fs 
     INNER JOIN dbo.fixture AS f ON fs.fixtureid = f.id 
WHERE (fs.rating > 0) 
GROUP BY fs.playerid, fs.teamownerid 
+0

是什么2之间的关系? fs.fixtureid列在哪里链接? – Ajay2707 2015-02-06 05:08:53

+0

'TOP(100)PERCENT'是什么? – 2015-02-06 05:15:59

回答

1

试试这个:

SELECT 
    X.playerid, 
    X.teamownerid, 
    X.goals, 
    ( SELECT Sum(goal) 
     FROM fixturestats 
     WHERE X.teamownerid = teamownerid 
    ) AS TeamGoals 
FROM (
     SELECT 
      TOP (100) PERCENT fs.teamownerid AS TeamOwnerId, 
      fs.playerid AS PlayerId, 
      Count(f.id) AS Apps, 
      Sum(fs.goal) AS Goals 
     FROM dbo.fixturestats AS fs 
     INNER JOIN dbo.fixture AS f ON fs.fixtureid = f.id 
     WHERE (fs.rating > 0) 
     GROUP BY fs.playerid,fs.teamownerid 
    ) AS X 
+0

@ Ajay2707:你用什么工具修复'spaces'? – 2015-02-06 05:18:49

+0

http://www.dpriver.com/pp/sqlformat.htm – Ajay2707 2015-02-06 05:25:34

1

您可以使用Sum-Over此:

select 
    *, 
    Sum(Goals) over (partition by TeamOwnerId) 
from 
    FixtureStats 
where 
    (Rating > 0)