Sql 基于另一个表的结果更新表

Sql 基于另一个表的结果更新表,sql,oracle,Sql,Oracle,我有两个表-一个是帐户表,另一个是上诉表。两者都由帐户Id连接 账户表有一个唯一的个人代码,账户id一个人代码可以有多个账户id,也可以有多个状态代码,状态代码为1,2,3 上诉表有账户id,听证日期可以是每个账户id的多个听证日期。我需要从上诉表中获取小于2014年1月1日的最长听证日期,其中,最长听证日期与账户表状态代码中的状态代码“1”相对应 例如: 科目表: person_id: 1234 account_id: 57897 status_code: 1 person_

我有两个表-一个是帐户表,另一个是上诉表。两者都由帐户Id连接

账户表有一个唯一的个人代码,账户id一个人代码可以有多个账户id,也可以有多个状态代码,状态代码为1,2,3

上诉表有账户id,听证日期可以是每个账户id的多个听证日期。我需要从上诉表中获取小于2014年1月1日的最长听证日期,其中,最长听证日期与账户表状态代码中的状态代码“1”相对应

例如:

科目表:

person_id: 1234     account_id: 57897      status_code: 1
person_id: 1234     account_id: 65098      status_code: 2
person_id: 4567     account_id: 90455      status_code: 2
person_id: 4567     account_id: 98567      status_code: 1
上诉表:

account_id: 57897     hearing_date: 12-FEB-2014
account_id: 65098     hearing_date: 22-JAN-2014
account_id: 90455     hearing_date: 22-JAN-2015
account_id: 98567     hearing_date: 22-FEB-2014
我需要做一个更新声明,以便将上诉表中听证日期<2014年1月1日且账户id在账户表中的状态代码为1的最大听证日期更新为另一个状态代码


如果有人能为我提供指导,我将不胜感激,因为我正在尝试案例陈述和子查询,但进展不快:

我没有完全理解您的需求,但这里有一个大致的想法:

update Accounts
set accounts_column = (
    select max(hearing_date)
    from Appeals
    where Appeals.Account_Id = Accounts.Account_Id /* <- the important part */
        and hearing_date < '20140101'
)
where status_code = 1

欢迎来到StackOverflow。StackOverflow不是“免费完成工作”服务。请展示您所做的尝试,以便我们能够帮助您找出问题所在。Shawnt00-感谢您在这方面的帮助。最终结果是:更新账户a集合a.status_代码='2',其中a.status_代码='1',并存在从h中选择1,其中h.account_id=a.account_id和h.Heading_date<至_date'01-JAN-2013',“DD-MON-YYYY”和h.harding_date=从上诉h2中选择MAXh2.harding_date,其中h2.account_id=a.account_id;