Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在Oracle中选择具有最新日期的丢失记录_Sql_Oracle - Fatal编程技术网

Sql 在Oracle中选择具有最新日期的丢失记录

Sql 在Oracle中选择具有最新日期的丢失记录,sql,oracle,Sql,Oracle,我有两个表,只有3个公共字段。 我编写了下面的查询来提取表1中最新日期的缺失数据 Employee Category Date_Field First_Name Last_Name Status Result 100 Type1 30/08/2010 A B Present Good 200 Type1 1/09/2010 C D Hello Alt 100

我有两个表,只有3个公共字段。 我编写了下面的查询来提取表1中最新日期的缺失数据

Employee Category Date_Field   First_Name Last_Name Status   Result
100      Type1    30/08/2010   A          B          Present  Good
200      Type1    1/09/2010    C          D          Hello    Alt
100      Type3    30/09/2010   A          B 
100      Type1    30/09/2012   A          B 


Employee Category Date_Field   
100      Type1     03/11/2016 
100      Type3     30/09/2010 
100      Type4     11/10/2010
200      Type3     12/12/1989
我的问题是

with x1 as (SELECT Employee,Category,Date_Field,First_Name,Last_Name,Status,Result,' ' as Somefield from table 1
where not exists 

(select 1 from table2
where table1.employee=table2.employee and table1.category = table2.Category
and table1.Date_Field = table2.Date_Field)),

x2 as (select Employee,Category,Max(Date_Field) as DateField from x1 group by Employee)

select x1.Employee,x1.Category,x1.Date_Field,x1.First_Name,x1.Last_Name,x1.Status,x1.Result,x1.Somefield from x1,x2
where x1.Employee = x2.Employee and x1.Date_Field=x2.DateField and x1.Category=x2.Category
order by x1.Employee;
我得到的当前输出是

Employee Category Date_Field  First_Name Last_Name Status Result
100     Type1     30/09/2012  A           B 
200     Type1     1/09/2010   C           D        Hello Alt
我是否可以修改此查询,以便在表2中,如果存在具有最新日期和类别的同一员工的ia记录,则我的输出不应包含该记录

因此,预期的输出是

Employee Category Date_Field First_Name Last_Name Status Result
200      Type1    1/09/2010  C          D         Hello  Alt

非常感谢您的帮助

希望您可以忽略
NOT EXISTS
子句的日期字段

SELECT * FROM TABLE1 T1
WHERE NOT EXISTS
(
  SELECT 'x' FROM TABLE2 T2
  WHERE T1.EMPLOYEE = T2.EMPLOYEE
   AND T1.CATEGORY = T2.CATEGORY
   AND T2.DATEFIELD >= T1.DATEFIELD
)

Maheshwaran如果我删除日期字段,它将返回表1中所有缺失的数据,这些数据不是我不需要的。我需要检查每个类别的员工的最新记录是否来自表1,如果是,我需要填充它,否则忽略更新的SQL应该有帮助。@AnnieJeba它应该可以工作。我看没什么问题。