2017-10-16 103 views
0

我想基于当分支ID和员工ID相同甲骨文 - 过滤重复的记录

注OPEN_DATE过滤重复行:我拉从多个tables.I这些列试图找到其他职位的答案但找不到。

表行

OPENED_DATE BRANCH_ID EMPLOYEE_ID 
01/13/2014  100  100121  <- FILTER(SELECT ONLY LATEST OPENED_DATE) 
01/29/2014  100  100121  <- FILTER(SELECT ONLY LATEST OPENED_DATE) 
02/03/2014  100  100121 
02/03/2014  100  100150 

在此先感谢。

+0

使用分析:'MAX(opened_date)以上(分区由Branch_ID,的Employee_ID)作为Opened_Date' [DOCS](https://docs.oracle.com/cloud/latest/db112/SQLRF/functions098。 htm#SQLRF00666)根据需要确保按适当的字段分组。 – xQbert

+0

-------- SELECT T_EMPLOYEE_ACCOUNT.EMPLOYEE_ID, T_EMPLOYEE.ENTRY_ID, T_EMPLOYEE_ACCOUNT.BRANCH_ID, T_EMPLOYEE_ACCOUNT.EMPLOYEE_ID, T_EMPLOYEE.OPENED_ID FROM T_EMPLOYEE_ACCOUNT JOIN T_EMPLOYEE_ACCOUNT.ENTRY_ID = T_EMPLOYEE.ENTRY_ID; – Cmen535

+0

from/join在语法上不正确。如果您加入T_EMPLOYEE,您需要先执行此操作,然后使用'on'子句显示它们之间的关系。 'FROM T_EMPLOYEE_ACCOUNT INNER JOIN T_EMPLOYEE on T_EMPLOYEE_ACCOUNT.ENTRY_ID = T_EMPLOYEE.ENTRY_ID;' – xQbert

回答

0

您可以在branchid上使用行号,并按降序使用date命令。

SELECT t1.* 
FROM (SELECT OPENED_DATE 
      , BRANCH_ID 
      , EMPLOYEE_ID 
      , ROW_NUMBER() (OVER PARTITION BY BRANCH_ID , EMPLOYEE_ID ORDER BY OPENED_DATE desc) rn 
     FROM table) as t1 
WHERE rn=1 
+0

似乎我错过了一些东西。以下是我的实际查询--------选择T_EMPLOYEE_ACCOUNT.EMPLOYEE_ID, T_EMPLOYEE.ENTRY_ID, T_EMPLOYEE_ACCOUNT.BRANCH_ID, T_EMPLOYEE_ACCOUNT.EMPLOYEE_ID, T_EMPLOYEE.OPENED_ID FROM T_EMPLOYEE_ACCOUNT JOIN T_EMPLOYEE_ACCOUNT.ENTRY_ID = T_EMPLOYEE。 ENTRY_ID; – Cmen535