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)'。 –