2011-05-11 85 views
0

我有一個SQL存儲過程,可以爲棒球團隊總結結果。我'分組'按適當的列和總結其他人,我需要所選查詢的統計數據。它工作正常,並給我我想要的結果。SQL Server - 通過查詢獲取特定數據

我在運行的情況是在一個玩家可以在同一賽季內屬於不同團隊的情況下,我不能靠團隊組。我所做的是我使用了一個子查詢來獲得球員的目前的球隊。再次,工作正常。但是我需要獲得更多的個人信息,例如球員目前的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 
+2

請提供您的表格模式的詳細信息。 – 2011-05-11 21:37:54

回答

0

如果您的查詢要求相關子查詢則沒有什麼錯......假設你居然需要做到這一點。

難道你不是JOIN到「玩家」表,然後加入基於「player.current_team」列的「隊」表?

+0

Matthew我必須考慮這個......我添加了上面的模式。基本上這個小組限制了我一點。它是如何運作的:聯盟擁有一支球隊,一支聯盟擁有一個賽季,一支聯盟擁有球員。然後一個賽季擁有一個賽季球隊(加盟聯盟球隊),一個賽季球隊擁有一名賽季球員(加入聯盟球員)。一名球員的數據屬於一場比賽和一名賽季球隊(b.c一名球員可以在一個賽季中擔任多個賽季球隊)。 – IMAbev 2011-05-11 22:26:47

相關問題