I'm still learning SQL properly and have come across a little problem that I know can be solved I am just unsure how.
My query as it looks at the moment -
SELECT 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E' AS TeamId, Div AS CompetitionId, Count(*) AS GamesPlayed, Sum(HomeGoals) AS HomeGoals, Sum(AwayGoals) AS HomeGoalsConceded, Sum(HalfTimeHomeGoals) AS HalfTimeHomeGoals, Sum(HalfTimeAwayGoals) AS HalfTimeHomeGoalsConceded, Sum(HomeTeamCorners) AS HomeCorners, Sum(AwayTeamCorners) AS HomeCornersConceded, Sum(HomeTeamFouls) AS HomeFouls, Sum(HomeTeamYellows) AS HomeYellows, Sum(HomeTeamReds) AS HomeReds FROM ( SELECT TOP 10 * FROM dbo.Match INNER JOIN dbo.MatchDetail ON dbo.Match.Id = dbo.MatchDetail.MatchId WHERE (HomeTeamId = 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E' OR AwayTeamId = 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E') ORDER BY [Date] DESC ) AS LatestMatches WHERE HomeTeamId = 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E' GROUP BY Div
SELECT
'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E' AS TeamId,
Div AS CompetitionId,
Count(*) AS GamesPlayed,
Sum(AwayGoals) AS AwayGoals,
Sum(HomeGoals) AS AwayGoalsConceded,
Sum(HalfTimeAwayGoals) AS HalfTimeAwayGoals,
Sum(HalfTimeHomeGoals) AS HalfTimeAwayGoalsConceded,
Sum(AwayTeamCorners) AS AwayCorners,
Sum(HomeTeamCorners) AS AwayCornersConceded,
Sum(AwayTeamFouls) AS AwayFouls,
Sum(AwayTeamYellows) AS AwayYellows,
Sum(AwayTeamReds) AS AwayReds
FROM
(
SELECT TOP 10 *
FROM dbo.Match
INNER JOIN dbo.MatchDetail ON dbo.Match.Id = dbo.MatchDetail.MatchId
WHERE (HomeTeamId = 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E'
OR AwayTeamId = 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E')
ORDER BY [Date] DESC
) AS LatestMatches
WHERE AwayTeamId = 'E3FBE4EC-B5AA-4558-A9A1-003D05D9A92E'
GROUP BY Div
I understand this is very messy, firstly can I strip out the "SELECT TOP 10*" into a temporary table and how? Secondly to improve it further could I achieve this in a single query with one row rather than two rows/sets?
Thanks in advance will try explain more if needs be.