如何在SQL中有条件地选择唯一值?



我的任务是只返回具有唯一ID的行,但在SQL中返回每个ID的行。我该怎么做呢?

逻辑:对于主行,选择where JOB_INDICATOR = ' P '。如果有多行,则使用PRIM_ROLE_IND = ' Y '的记录。如果仍然有多个,则选择从0开始的最低编号的EMPL_RCD。

示例起始点:

empl_rcd000

您可以使用窗口函数ROW_NUMBER()来完成此操作:

SELECT *
FROM 
(
SELECT EMPLOYEE.*, ROW_NUMBER() OVER (PARTITION BY id ORDER BY 
prim_role_ind DESC, empl_rcd ASC) as rn
FROM EMPLOYEE
WHERE JOB_INDICATOR = 'P'
) dt
WHERE rn = 1

最新更新