我想将行组合在一起,然后过滤每个组。如果我有下表:
mytable的
id | filename | region | text
------------------------------------
1 | aaa | 1 | Region1 aaa
2 | bbb | 2 | Region2 bbb
3 | aaa | 5 | Region5 aaa
4 | bbb | 5 | Region5 bbb
我想按文件名进行分组,并使用MAX
区域编号取出每个组中的行。这会将数据导入适当的组:
SELECT filename
FROM mytable
GROUP BY filename
...但是我可以在每个组中选择具有最高区域值的条目,在这种情况下,它将是ID为3和4的行吗? HAVING
子句仅过滤整个组,而不过滤组内的行。
答案 0 :(得分:1)
使用row_number
。
select top 1 with ties *
from tbl
order by row_number() over(partition by filename order by region desc)
答案 1 :(得分:1)
select *
from ( select *
, row_number() over(partition by filename order by region desc) as rn
from table
) tt
where rn = 1