我有一张这样的桌子
我目前的查询
Select team,
stat_id,
max(statsval) as statsval
from tbl
group by team,
statid
问题:我需要在选择中获得赛季而且不经意地我需要添加到分组但是是给我非预期的结果我不能改变我的分组 . 因为我需要按stat_id分组我只能分组赛季 . 我需要获得max()记录的季节 . 有人可以帮我吗?
我甚至试过了
Select team,
stat_id,
max (seasonid),
max(statsval) as statsval
from tbl
group by team,
statid
但它需要最大的季节不完全正确的结果 .
例外结果
+--------+--------+-------+---------+---------+
| season | team | round | stat_id | statval |
+--------+--------+-------+---------+---------+
| 2004 | 500146 | 3 | 1 | 5 |
| 2007 | 500147 | 1 | 1 | 4 |
+--------+--------+-------+---------+---------+
4 回答
使用Windows函数尝试此操作
尝试此操作并在分组完成后查找团队ID:
如果你想要完整的行,你可以简单地使用相关的子查询:
索引在
tbl(team, statsval, season)
上,这可能与其他选项一样好或更好 .性能较差的有趣方法(即使使用索引)是:
根据您的SQL Server版本,这可以仅使用Window函数完成: