Sql 按记录分组,然后从每个组中获取最后一个升序排序的记录?
我有一张桌子:Sql 按记录分组,然后从每个组中获取最后一个升序排序的记录?,sql,sql-server,sql-server-2008,tsql,sql-server-2005,Sql,Sql Server,Sql Server 2008,Tsql,Sql Server 2005,我有一张桌子: | P_id | Month | Year | Name | 624 09 2009 Test1 600 10 2010 Test2 624 10 2010 Test6 600 09 2011 Test7 我想按p\u id降序、Year升序、然后Month升序对表进行排序 根据顺序,我想要每个p\u id的最后一条记录 运行步骤1后: | P_id | Mo
| P_id | Month | Year | Name |
624 09 2009 Test1
600 10 2010 Test2
624 10 2010 Test6
600 09 2011 Test7
p\u id
降序、Year
升序、然后Month
升序对表进行排序p\u id
的最后一条记录| P_id | Month | Year | Name |
624 09 2009 Test1
624 10 2010 Test6
600 10 2010 Test2
600 09 2011 Test7
期望输出:
| P_id | Month | Year | Name |
624 10 2010 Test6
600 09 2011 Test7
您可以使用
行编号
:
select *
from (
select row_number() over (
partition by p_id
order by year desc, month desc) as rn
, *
from YourTable
) as SubQueryAlias
where rn = 1
子查询是必需的,因为您不能在
where
子句中直接使用row_number
。我不能在类型化数据集中使用row_number()函数。对于类型化数据集,您的意思是什么?在VisualStudio中,添加新项-->VC#-->数据-->dataset:)您可以使用SqlCommand.ExecuteReader
和运行查询。我怀疑您还可以编辑数据集底层的XML,使其能够处理任何查询。或者更好的是,换成