获取每个组的最新记录

时间:2020-04-01 09:06:50

标签: sql sql-server

我想执行一条select语句,并按row_num列获取每组pos_code的最新记录。请参考下面的预期结果。

我尝试了一些函数,例如last_value和max(),但是这些都不起作用。请协助我进行选择语句查询。

下面是view_table

 pos_code | dept_id | row_num
 10001    |    1    |    1
 10001    |    3    |    2
 10001    |    2    |    3
 10002    |    5    |    1
 10002    |    6    |    2

预期结果

 pos_code | dept_id | row_num
 10001    |    2    |    3
 10002    |    6    |    2

2 个答案:

答案 0 :(得分:0)

这应该有用吗?

WITH cte AS (
    SELECT
        pos_code,
        dept_id,
        row_num,
        ROW_NUMBER() OVER (PARTITION BY pos_code ORDER BY row_num DESC) AS order_id
    FROM
        view_table)
SELECT
    pos_code,
    dept_id,
    row_num
FROM
    cte
WHERE
    order_id = 1;

答案 1 :(得分:0)

您可以在WHERE子句中使用相关子查询,该子查询返回每个row_num的最大pos_code

select t.* from tablename t
where t.row_num = (select max(row_num) from tablename where pos_code = t.pos_code)
相关问题