Порядок SQL SERVER по математической операции между полями - PullRequest
0 голосов
/ 05 июля 2019

Здравствуйте, у меня есть таблица с результатами MLB 2019 и попытка создать турнирную таблицу. Я создал код в MySQL и работает нормально, но тот же код в SQL Server содержит ошибку в предложении ORDER BY. Проблема заключается в операции Wins / (Wins + Losses), потому что она говорит, что нет столбцов «Wins» и «Losses». Я знаю, что я могу записать Wins / (Wins + Losses) AS Ratio в операторе select, но я не хочу видеть колонку Ratio рядом с Wins-Loses в моем результате. Любая идея?

Сообщение 207, Уровень 16, Состояние 1, Строка 53 Неверное имя столбца 'Wins'. Сообщение 207, Уровень 16, Состояние 1, Строка 53 Неверное имя столбца 'Wins'. Сообщение 207, Уровень 16, Состояние 1, Строка 53 Неверное имя столбца «Потери».

Select a1.Team,a1.HomeWins+a2.AwayWins as Wins,a1.HomeLoses+a2.AwayLoses 
as Losses 
FROM 
(select t0.Team, t0.HomeWins,t1.HomeLoses from (select home as 
Team,count(home) as HomeWins from mlbreg
where homescore>awayscore
group by home) t0  INNER JOIN (select home as Team,count(home) as 
HomeLoses from mlbreg
where homescore<awayscore
group by home) t1 on t0.Team=t1.Team) a1
INNER JOIN 
(select t2.Team, t2.AwayWins,t3.AwayLoses from (select away as 
Team,count(away) as AwayWins from mlbreg
where homescore<awayscore
group by away) t2  INNER JOIN (select away as Team,count(away) as 
AwayLoses from mlbreg
where homescore>awayscore
group by away) t3 on t2.Team=t3.Team) a2 on a1.Team=a2.Team  
order by (Wins/(Wins+Losses)) desc;

1 Ответ

3 голосов
/ 05 июля 2019

Попробуйте это -

Select a1.Team,a1.HomeWins+a2.AwayWins as Wins,a1.HomeLoses+a2.AwayLoses 
as Losses 
FROM 
(select t0.Team, t0.HomeWins,t1.HomeLoses from (select home as 
Team,count(home) as HomeWins from mlbreg
where homescore>awayscore
group by home) t0  INNER JOIN (select home as Team,count(home) as 
HomeLoses from mlbreg
where homescore<awayscore
group by home) t1 on t0.Team=t1.Team) a1
INNER JOIN 
(select t2.Team, t2.AwayWins,t3.AwayLoses from (select away as 
Team,count(away) as AwayWins from mlbreg
where homescore<awayscore
group by away) t2  INNER JOIN (select away as Team,count(away) as 
AwayLoses from mlbreg
where homescore>awayscore
group by away) t3 on t2.Team=t3.Team) a2 on a1.Team=a2.Team  
order by ((a1.HomeWins+a2.AwayWins)/((a1.HomeWins+a2.AwayWins)+(a1.HomeLoses+a2.AwayLoses))) desc;
...