0
我希望能夠通過LgID和YearID選擇頂級Max(HR)領導者。但我也想要播放器的名稱列。 (T-SQL,SQL Server 2012 Express)Group By的問題 - 想要在不使用Group By的情況下調用列(T-SQL,SQL Server)
當我用玩家名稱查詢時,它會爲每個最大(HR)輸出返回「0」。看來SQL Server 2012 Express不會允許我在select語句中使用它時忽略組中的PlayerID。有沒有辦法得到這個?什麼時候?或者是其他東西?
Select
playerID,
yearID,
lgID,
Max(HR) HR_Leader
from batting
group by
yearID,
lgID
order by
yearID desc,
lgID,
Max(HR)
Returns this error:
Msg 8120, Level 16, State 1, Line 2
Column 'batting.playerID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
但是當我註釋掉PlayerID,它運行,但我沒有名字,因爲在這裏看到:1評論/問題後
Select
--playerID,
yearID,
lgID,
Max(HR) HR_Leader
from batting
group by
yearID,
lgID
order by
yearID desc,
lgID,
Max(HR)
yearID lgID HR_Leader
2013 AL 53
2013 NL 36
2012 AL 44
2012 NL 41
2011 AL 43
2011 NL 39
2010 AL 54
2010 NL 42
2009 AL 39
2009 NL 47
更新。
Select
playerID,
yearID,
lgID,
Max(HR) HR_Leader
from batting
group by
playerID,
yearID,
lgID
order by
yearID desc,
lgID,
Max(HR) desc
Query Returns this: Which doesn't have the look of the 1st output (
playerID yearID lgID HR_Leader
davisch02 2013 AL 53
cabremi01 2013 AL 44
encared01 2013 AL 36
dunnad01 2013 AL 34
trumbma01 2013 AL 34
jonesad01 2013 AL 33
longoev01 2013 AL 32
ortizda01 2013 AL 30
mossbr01 2013 AL 30
beltrad01 2013 AL 30
我想是這樣的:
PlayerID yearID lgID HR_Leader
Player1 2013 AL 53
Player2 2013 NL 36
Player3 2012 AL 44
Player4 2012 NL 41
Player5 2011 AL 43
Player6 2011 NL 39
Player7 2010 AL 54
Player8 2010 NL 42
Player9 2010 NL 42
由於您基於yearID和lgID(但不是playerID)對行進行分組,因此您希望分組行中playerID的值爲多少? –
我想要播放器名稱,但當我將播放器ID放入分組依據時,它不會僅返回SQL Server中的最大(HR)值。它返回所有總數。我將把它放在上面的例子中...... – Paul
SQL只能在那裏返回一個值,但它不知道它們都是一樣的。如果您碰巧知道所有名稱對於yearID和lgID的特定組合都是相同的,則可以使用'MAX(playerID)'或'MIN(playerID)'。 –