在Oracle 11g中过滤掉报告中的重复条目

时间:2012-11-01 18:28:27

标签: sql oracle plsql oracle-apex

我们在Windows Server 2008 R2上运行Oracle 11g

我目前有一个在全国范围内用于管理招聘系统的应用程序,我们是一家合同工程人员公司。

现在,我们有一个相当大的候选人数据库,我们以前曾与之合作过,我使用Oracle Text使附加的简历可以搜索,这很好,唯一的问题是我们经常将相同的候选人发送到多个工作是为了让他们更快地工作,这意味着我可能会让相同的候选人的简历在搜索结果中出现6或7次,我希望根据候选人的姓名和招聘人员姓名过滤掉重复的内容,因为我不喜欢我只想过滤掉候选人姓名,因为有些人有相同的名字,但通常有1位招聘人员与1名候选人合作,我知道这并不完美,但可以帮助缩小范围。

我尝试了一些删除欺骗的东西,但我无法使其工作,这是我们用于生成搜索结果的当前查询。

select score(1) relevance,
"PKEY",
"DATE_SUB",
"CLIENT",
"CANDIDATE",
"RECRUITER",
"SALES",
dbms_lob.getlength("RESUME") "RESUME",
+"MIMETYPE",
"FILENAME",
"POSITION",
"AVAILABILITY",
"RATE",
"ISSUES",
"WHEN_INT",
"FEEDBACK",
"NOTES"
from "SUBMITTALS"
where CONTAINS (resume, :P11_SEARCH, 1) > 0 order by 1 desc

有什么想法吗?

再次感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用分析函数删除重复项:

select * from (
  select score(1) relevance,
  "PKEY",
  "DATE_SUB",
  "CLIENT",
  "CANDIDATE",
  "RECRUITER",
  "SALES",
  dbms_lob.getlength("RESUME") "RESUME",
  "MIMETYPE",
  "FILENAME",
  "POSITION",
  "AVAILABILITY",
  "RATE",
  "ISSUES",
  "WHEN_INT",
  "FEEDBACK",
  "NOTES",
  row_number() over (partition by CANDIDATE, RECRUITER order by PKEY) rn
  from "SUBMITTALS"
  where CONTAINS (resume, :P11_SEARCH, 1) > 0 
 )
 where rn = 1
 order by 1 desc

每个候选人/招聘人员对将返回一行。