select * from
(
select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组
, * -- 所需显示的字段
from 表
) as T
where T.rownum = 1
对每组的数据按日期排序并加上行号
取出时只取行号为1,也就是第一条数据。
这种方法,能同时一次对两个字段分组波,即两个字段内容相同为一组
可以的
逗号分开
select * from
(
select row_number() over(partition by 'Gr1',‘Gr2’[, ...]
order by 'Sort1', 'Sort2'[, ...]) as rownum -- 排序并分组
, * -- 所需显示的字段
from 表
) as T
where T.rownum = 1
我的意思是两字段唯一标示一条记录,不是在分组中分组
不是很明白你的意思 但是这不是分组中分组。。 这个只分组了一次,给每组的数据都加上rownum,再选取每组中的第一条 C1 C2 C3 1 A 2012 2 A 2013 1 B 2012 2 B 2013 ... C1是rownum, C2是分组条件,C3是排序条件 只选取C1 = 1 的
本文介绍了一种使用SQL的row_number()函数结合partition by和order by子句来实现对数据进行分组,并从中选择每组第一条记录的方法。此方法适用于需要基于多个字段进行分组并获取特定顺序下首条记录的场景。
5万+

被折叠的 条评论
为什么被折叠?



