我有一个SQL存储过程,总计棒球队的结果。我'分组'适当的列并将我需要的其他列与所选查询的总统计数相加。它工作正常,给我我想要的结果。
我遇到的情况是一个玩家可以属于相同赛季中不同球队的情况,我无法按球队分组。我所做的是我使用子查询来获得玩家的当前团队。再次,工作正常。但我需要获得更多个人信息,例如球员当前的teamID。我不能在上面提到的子查询中组合两列。针对主查询运行多个子查询是不好的做法吗?在使用Group By时,是否有其他方法可以从查询中获取特定(或不同)信息?
修改 添加了表模式。
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
答案 0 :(得分:0)
如果您的查询需要相关子查询,那么这没有任何问题...假设您实际上需要来执行此操作。
你不能JOIN
到“玩家”表,然后根据“player.current_team”栏加入“球队”表吗?