Sql 在比较相同属性时,如何合并按日期选择?
如果记录具有来自操作的“D”类型=“177”,则它必须具有以下内容: 除097和190以外的后续操作,具有以下类型的“Y”、“S”、“T” 该表具有多对1关系,如下所示: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
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,根据补充信息,我修改了我的建议答案。这是否产生了预期的结果?