我想执行一条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
答案 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)