2

我有一张桌子:

| P_id | Month |  Year  |  Name  |
   624     09     2009    Test1
   600     10     2010    Test2
   624     10     2010    Test6
   600     09     2011    Test7
  1. 我想按P_id降序、Year升序、Month升序排列我的桌子

  2. 根据我想要每个的最后一条记录的顺序P_id

运行第 1 步后:

| 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
4

1 回答 1

3

你可以使用row_number

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

子查询是必需的,因为您不能row_number直接在where子句中使用。

于 2012-05-20T19:11:51.330 回答