Sql 在比较相同属性时,如何合并按日期选择?

Sql 在比较相同属性时,如何合并按日期选择?,sql,oracle,Sql,Oracle,如果记录具有来自操作的“D”类型=“177”,则它必须具有以下内容: 除097和190以外的后续操作,具有以下类型的“Y”、“S”、“T” 该表具有多对1关系,如下所示: ID | operation | type | date 1 | 177 | D | 09/12/12 1 | 136 | S | 03/12/15 2 | 177 | D | 04/15/1

如果记录具有来自操作的“D”类型=“177”,则它必须具有以下内容: 除097和190以外的后续操作,具有以下类型的“Y”、“S”、“T”

该表具有多对1关系,如下所示:

ID  |   operation  |  type   |   date  
1   |   177        |   D     |   09/12/12
1   |   136        |   S     |   03/12/15
2   |   177        |   D     |   04/15/13
2   |   190        |   Y     |   05/05/14
3   |   177        |   A     |   09/21/12
3   |   012        |   D     |   08/12/16
4   |   177        |   D     |   09/13/15
4   |   122        |   T     |   11/11/11
在上表中,我们希望返回的唯一ID是1日期较新,3操作177不是类型d。我们不希望返回2,因为我们排除了操作190,我们不希望返回4,因为操作122日期在操作177之前

到目前为止,我只能做到:

Select * 
from mytable
Where (operation = ‘177’ and type = ‘D’) 
  and ((operation not in (‘097’,’190’) and type in (‘Y’,’S’,’T’));
我的问题是,如果操作日期不在'097','190',输入'Y','S','T'的记录比操作日期为'177',输入日期为'D'的记录最近,我该如何选择


谢谢。

谢谢你的澄清,这是我修改后的提案。基本上,连接到id上的同一个表并编写一个合适的where子句。我选择了带回来所有的田地。这是一份工作报告

  select
  a.id
, a.operation
, a.type
, a.d
, b.operation
, b.type
, b.d
from mytable  a
inner join mytable  b on a.id=b.id 
WHERE (a.operation ='177' and a.type='D')
  and b.type in ('Y','S','T')
  and a.d<b.d;

类型D是删除记录的建议。发生的是177号员工操作员在删除建议的情况下做得很差。因此,我们希望找到他们建议删除的所有记录,但另一个操作员建议在D类型发生之后对该记录执行其他操作。我尝试运行查询,但未返回任何内容;有什么想法吗?@user7002207,根据补充信息,我修改了我的建议答案。这是否产生了预期的结果?