SQL Server - получение определенных данных в запросе Group By - PullRequest
0 голосов
/ 12 мая 2011

У меня есть хранимая процедура SQL, которая суммирует результаты для бейсбольной команды.Я группирую соответствующие столбцы и суммирую остальные, которые мне нужны, чтобы получить общую статистику для выбранного запросаОн отлично работает и дает мне результаты, которые я хочу.

Я сталкиваюсь с ситуацией, когда один Игрок может принадлежать к разным командам в течение одного и того же сезона, я не могу сгруппироваться по командам.Я использовал подзапрос, чтобы получить текущую команду игроков.Опять работает отлично.Но мне нужно будет получить больше индивидуальной информации, такой как текущий идентификатор команды игроков.Я не могу объединить два столбца в упомянутом выше подзапросе.Плохо ли запускать несколько подзапросов для основного запроса?Есть ли другой способ получить конкретную (или отличную) информацию из запроса при использовании Group By?

EDIT Добавлена ​​схема таблицы.

SELECT LS.SeasonName, A.SeasonID, PM.PlayerID, PM.PFirstName, PM.PLastName,
(SELECT     ILT.TeamName
                        FROM          League_T AS ILT INNER JOIN
                                               Season_T AS IST ON ILT.TeamID = IST.TeamID INNER JOIN
                                               Season_P AS ISP ON IST.SeasonTeamID = ISP.Season_TeamID
                        WHERE      (ISP.PlayerID = PM.PlayerID) AND (ISP.IsCurrent = 1)) AS 'CurrentTM', 
                       (SELECT     ILT.TeamID
                        FROM          League_Team AS ILT INNER JOIN
                                               Season_Team AS IST ON ILT.TeamID = IST.TeamID INNER JOIN
                                               Season_P AS ISP ON IST.SeasonTeamID = ISP.Season_TeamID
                        WHERE      (ISP.PlayerID = PM.PlayerID) AND (ISP.IsCurrent = 1)) AS 'CurrentTMID', 
Count(Case WHEN GS = 1 THEN GS END) AS GS, --multiple SUM columns here--
FROM Player_Master PM
INNER JOIN Season_P ON PM.PlayerID = Season_P.PlayerID 
INNER JOIN Season_S AS A 
INNER JOIN Season_SD AS B ON A.GameID = B.GameID
INNER JOIN Season_PP AS C ON B.OutcomeID = C.OutcomeID ON Season_P.Season_PlayerID = C.SeasonPlayerID
INNER JOIN League_Season AS LS ON A.SeasonID = LS.SeasonID
WHERE (B.TeamID = @TeamID) AND (LS.IsCurrent = 1)
Group By LS.SeasonName, A.SeasonID, PM.PlayerID, PM.PFirstName, PM.PLastName

1 Ответ

0 голосов
/ 12 мая 2011

Если ваш запрос требует коррелированных подзапросов, то в этом нет ничего плохого ... при условии, что вам действительно нужно , чтобы сделать это.

Не могли бы вы JOIN перейти к таблице игроков, а затем присоединиться к таблице команд на основе столбца player.current_team?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...