Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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 查询以选择具有最新打开日期的记录说明_Sql_Oracle - Fatal编程技术网

Sql 查询以选择具有最新打开日期的记录说明

Sql 查询以选择具有最新打开日期的记录说明,sql,oracle,Sql,Oracle,表4.1.1案例行动 CASE_ID SEQ_NUM DATE_OPEN DATE_DUE CODE DESCREPTION_J 153286253 64125995 9/21/2013 9/28/2013 23001954 有害事象連絡票 153286253 64125996 9/23/2013 9/29/2013 23001938 PMS-SAE/AE報告書 表LM_行动项目类型 ACTIO

表4.1.1案例行动

CASE_ID      SEQ_NUM      DATE_OPEN     DATE_DUE   CODE       DESCREPTION_J
153286253    64125995     9/21/2013     9/28/2013  23001954   有害事象連絡票
153286253    64125996     9/23/2013     9/29/2013  23001938   PMS-SAE/AE報告書
表LM_行动项目类型

ACTION_TYPE_ID      ACTION_TYPE 
23001954           JP FU AE Report Frm
23001938           JP FU with pregnancy 
我想为“JP FU AE报告Frm”或“JP FU妊娠”类型的最新记录选择描述

我写的问题是:

select 
    description_j 
from 
    case_actions 
where  
    date_open = (select MAX(ca.date_open) 
                 from case_actions ca, LM_ACTION_ITEM_TYPE lat 
                 where ca.code = lat.action_type_id 
                   and lat.action_type IN ('JP FU AE Report Frm – Contact Record', 'JP FU AE Report Frm–Detail Invest. Frm','JP FU with pregnancy form') 
                   and ca.case_id = :P_LET_CASE_ID and ca.action_status = 1 
                   and ca.deleted is NULL)

它给了我不正确的数据。请提供帮助。

您必须将外部查询与内部查询关联起来,否则您可能会得到仅具有共同日期的case\u操作(而不是子查询中的其他筛选器)

使用此示例数据:

如果case_id=153286253,您的查询将给出bbb和ddd。但是ddd有一个不同的案例id和代码,我想你不需要


将和ca.case\u id=case\u actions.case\u id添加到内部查询会得到bbb,我相信这就是您所期望的结果

首先,您应该始终给出整个表结构定义。 无论如何,根据你的示例查询,我可以想到一些东西。 试试这个

select ca.description_j 
  from case_actions ca
 where ca.date_open = (select MAX(ca.date_open) 
                      from lm_action_item_type lat 
                     where ca.code = lat.action_type_id 
                       and lat.action_type IN ('JP FU AE Report Frm Contact Record', 'JP FU AE Report Frm Detail Invest. Frm','JP FU with pregnancy form') 
                       and ca.case_id = :P_LET_CASE_ID 
                       and ca.action_status = 1 
                       and ca.deleted is NULL)

您是否自行运行子查询--它是否返回结果?如果是,您是否尝试将该值作为常量运行外部查询?那有用吗?如果没有示例数据和预期输出,我们无法提供更多帮助。是的,内部查询返回一个唯一的日期,即MAX date“MAX(ca.date\u open)”,因此我想要的是同一表中包含MAX(ca.date\u open)字段的另一列的值。任何帮助都是值得的,请不要破坏您的问题。没有投票结果,因此如果确实要删除它,您可以将其删除。您好,我也尝试过类似的方法,但问题是它可能会给出错误的结果。例如,如果内部查询返回:9/23/2013,外部查询只会将打开的日期与此匹配,并且该日期不能满足内部查询的条件。这正是问题所在。您可以通过case_id将两个查询关联起来(参见我的答案),也可以在外部查询中重复过滤器。结果是一样的,为什么不呢?你能至少给出一个理由吗?+1不需要。。。。您进行了编辑,并添加了一幅图像,现在图像非常清晰。非常感谢。