主键的MIN值返回另一列值

时间:2018-02-09 13:43:08

标签: sql oracle

我有下表,需要MIN PK

的USER_ID值
CLT_ID    PK_ID    USER_ID
  1         101      999     
  1         102      900     

预期产出:

 CLT_ID    PK_ID    USER_ID   MIN_USER_ID
  1         101      999          999
  1         102      989          999

我可以简单地创建一个排名函数然后过滤我的排名,但还有另一种方法吗?即Window Functions

2 个答案:

答案 0 :(得分:3)

您可以使用FIRST_VALUE窗口功能。

select t.*,first_value(user_id) over(partition by clt_id order by pk_id) as min_user_id
from tbl t

答案 1 :(得分:0)

试试这个:

SELECT T.*
     , first_value(USER_ID) OVER(PARTITION BY CLT_ID ORDER BY PK_ID) AS MIN_USER_ID
FROM table T