Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 在字段中查找指定值,但不显示该字段中最后一条记录为“1100”的任何记录_Sql_Oracle_Filter - Fatal编程技术网

Sql 在字段中查找指定值,但不显示该字段中最后一条记录为“1100”的任何记录

Sql 在字段中查找指定值,但不显示该字段中最后一条记录为“1100”的任何记录,sql,oracle,filter,Sql,Oracle,Filter,我想做的是找到所有记录,其中查询可能在其生命中的某个时刻具有EN13或EN93状态代码-然而,我正在努力的是,我需要从报告中删除所有记录,其中查询的最终状态代码为1100-即使查询历史中存在EN13或EN93 到目前为止我得到的代码是 select central_enquiry.enquiry_number, central_enquiry.enquiry_time, central_enquiry.service_code, enquiry_status_log.enq_status_cod

我想做的是找到所有记录,其中查询可能在其生命中的某个时刻具有EN13或EN93状态代码-然而,我正在努力的是,我需要从报告中删除所有记录,其中查询的最终状态代码为1100-即使查询历史中存在EN13或EN93

到目前为止我得到的代码是

select
central_enquiry.enquiry_number,
central_enquiry.enquiry_time,
central_enquiry.service_code,
enquiry_status_log.enq_status_code,
central_enquiry.enquiry_desc,
central_enquiry.outstanding_flag

from
central_enquiry
inner join enquiry_status_log on central_enquiry.enquiry_number = 
enquiry_status_log.enquiry_number

where
central_enquiry.service_code = 'GABV' and
enquiry_status_log.enq_status_code in ('EN13', 'EN93') and

((central_enquiry.enquiry_time > ADD_MONTHS(SYSDATE,-1) AND
central_enquiry.enquiry_time < SYSDATE)) 

order by 
central_enquiry.enquiry_number

您可以使用LAST_值或FIRST_值获取最新状态:

select *
from
 (
    select
    central_enquiry.enquiry_number,
    central_enquiry.enquiry_time,
    central_enquiry.service_code,
    enquiry_status_log.enq_status_code,
    central_enquiry.enquiry_desc,
    central_enquiry.outstanding_flag,

    -- latest status per enquiry_number
    first_value(enquiry_status_log.enq_status_code)
    over (partition by enquiry_status_log.enquiry_number
          order by central_enquiry.enquiry_time desc) as last_status

    from
    central_enquiry
    inner join enquiry_status_log on central_enquiry.enquiry_number = 
    enquiry_status_log.enquiry_number

    where
    central_enquiry.service_code = 'GABV' and

    ((central_enquiry.enquiry_time > ADD_MONTHS(SYSDATE,-1) AND
    central_enquiry.enquiry_time < SYSDATE)) 
 ) dt
where enq_status_code in ('EN13', 'EN93')
  and last_status <> '1100'
order by enquiry_number

由于我的Oracle SQL版本不允许使用Select*,下面是用于使其工作的代码

多亏了德诺思

select
dt.enquiry_number,
dt.enquiry_time,
dt.service_code,
dt.enq_status_code,
dt.enquiry_desc,
dt.outstanding_flag,

-- latest status per enquiry_number
first_value(dt.enq_status_code)
over (partition by dt.enquiry_number
      order by dt.enquiry_time desc) as last_status

from
(
select
central_enquiry.enquiry_number,
central_enquiry.enquiry_time,
central_enquiry.service_code,
enquiry_status_log.enq_status_code,
central_enquiry.enquiry_desc,
central_enquiry.outstanding_flag,

-- latest status per enquiry_number
first_value(enquiry_status_log.enq_status_code)
over (partition by enquiry_status_log.enquiry_number
      order by central_enquiry.enquiry_time desc) as last_status

from
central_enquiry
inner join enquiry_status_log on central_enquiry.enquiry_number = 
enquiry_status_log.enquiry_number

where
central_enquiry.service_code = 'GABV' and

((central_enquiry.enquiry_time > ADD_MONTHS(SYSDATE,-1) AND
central_enquiry.enquiry_time < SYSDATE)) 
) dt

where enq_status_code in ('EN13', 'EN93')
and last_status <> '1100'
order by enquiry_number

你的问题提到了工作,但在查询中没有一个被称为工作。道歉-混淆了工作和查询词。这绝对是我感兴趣的查询,我编辑了这篇文章来反映这一点。谢谢-返回时会显示一条错误消息,显示查询\u STATUS\u LOG.ENQ\u STATUS\u CODE无效标识符。当然,从外部删除了表名,谢谢。我的Oracle SQL版本不允许在语句开头将*与Select*一起使用,但已使用子查询中引用的dt表提取了值。