Jag har den frågan som räknar ut en hockeytabell
ALTER PROCEDURE cup_getTabell
@groupID int
AS
Select
t.Namn,t.ID,
sum(case when (t.ID = g.homeTeam and g.HomeScore > g.awayScore)
or (t.id = g.awayTeam and g.homeScore < g.awayScore) and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) +
sum(case when (t.ID = g.homeTeam and g.HomeScore < g.awayScore)
or (t.id = g.awayTeam and g.homeScore > g.awayScore) and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) +
sum(case when ((t.ID = g.homeTeam and g.HomeScore = g.awayScore)
and g.gameEnded = 1 and c.playOff = 0 or (t.id = g.awayTeam and g.homeScore = g.awayScore)
and g.gameEnded = 1 and c.playOff = 0) then 1 else 0 end) as gamesPlayed,
sum(case when (t.ID = g.homeTeam and g.HomeScore > g.awayScore)
or (t.id = g.awayTeam and g.homeScore < g.awayScore) and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) as wins,
sum(case when (t.ID = g.homeTeam and g.HomeScore < g.awayScore)
or (t.id = g.awayTeam and g.homeScore > g.awayScore) and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) as losses,
sum(case when ((t.ID = g.homeTeam and g.HomeScore = g.awayScore)
and g.gameEnded = 1 and c.playOff = 0
or (t.id = g.awayTeam and g.homeScore = g.awayScore)
and g.gameEnded = 1 and c.playOff = 0) then 1 else 0 end) as ties,
(sum(case when (t.ID = g.homeTeam and g.HomeScore > g.awayScore)
or (t.id = g.awayTeam and g.homeScore < g.awayScore) and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end)*2) +
sum(case when (t.ID = g.homeTeam and g.HomeScore = g.awayScore)
and g.gameEnded = 1 and c.playOff = 0 or (t.id = g.awayTeam and g.homeScore = g.awayScore)
and g.gameEnded = 1 and c.playOff = 0 then 1 else 0 end) as points,
sum((case when t.ID = g.homeTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end)*homeScore +
(case when t.ID = g.awayTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) * awayScore) as GoalsForward,
sum((case when t.ID = g.homeTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end)*awayScore +
(case when t.ID = g.awayTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) * homeScore) as GoalsAgainst,
sum((case when t.ID = g.homeTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end)*homeScore +
(case when t.ID = g.awayTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) * awayScore) -
sum((case when t.ID = g.homeTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end)*awayScore +
(case when t.ID = g.awayTeam and g.gameEnded = 1
and c.playOff = 0 then 1 else 0 end) * homeScore) as goalDifference
from
cup_deltagande_lag as t
left join cup_games as g
on (t.ID = g.homeTeam or t.ID = g.awayTeam)
left join cup_grupper as c
on c.id = g.groupID
where
t.gruppID = @groupID and c.playoff = 0
group by
t.ID,t.Namn,c.playoff,t.gruppID
order by
points desc, goaldifference Desc, goalsforward desc, t.Namn Asc
Problemet är att den räknar med matcher som inte är slut g.gameended = 0.
lägger jag till where g.gameended = 1 så fungerar det men då visas inte lagen som inte spelat några matcher.
Finns det något sätt att lösa det här på eller måste jag ha med where g.gameended = 1?