Sql 根据字段中的值组合选择最新记录

Sql 根据字段中的值组合选择最新记录,sql,db2,greatest-n-per-group,Sql,Db2,Greatest N Per Group,查询目标: 我试图选择总共80条记录(20个州-每个州4条记录)。每个州大约有20000条记录。理想情况下,我只想为活动类型和生产者类型代码的4种组合中的每一种选择最新的(使用ACTIVITY_TSP)记录 前 表1: AGENT_KEY STATE ACTIVITY_TYPE ... ACTIVITY_TSP 表2: AGENT_KEY PRODUCER_TYPE_CD A加入与分组依据 select STATE, ACTIVITY_TYPE, PRODUCER_TYPE_CD, MAX(

查询目标: 我试图选择总共80条记录(20个州-每个州4条记录)。每个州大约有20000条记录。理想情况下,我只想为活动类型和生产者类型代码的4种组合中的每一种选择最新的(使用ACTIVITY_TSP)记录

表1:

AGENT_KEY
STATE
ACTIVITY_TYPE
...
ACTIVITY_TSP
表2:

AGENT_KEY
PRODUCER_TYPE_CD

A
加入
分组依据

select STATE, ACTIVITY_TYPE, PRODUCER_TYPE_CD, MAX(ACTIVITY_TSP)
from table1 t1
  join table2 t2 on t1.AGENT_KEY = t2.AGENT_KEY
group by STATE, ACTIVITY_TYPE, PRODUCER_TYPE_CD
或者您想要所有的table1和table2列

select *
from table1 t1
  join table2 t2 on t1.AGENT_KEY = t2.AGENT_KEY
where not exists (select 1 from table1 t1b
                  where t1b.STATE = t1.STATE
                    and t1b.ACTIVITY_TYPE = t1.ACTIVITY_TYPE
                    and t1b.PRODUCER_TYPE_CD = t1.PRODUCER_TYPE_CD
                    and t1b.ACTIVITY_TSP > t1.ACTIVITY_TSP)
使用
行编号()


可能重复给定示例的预期结果?抱歉,该示例是20个州中1个州的预期结果。
select *
from table1 t1
  join table2 t2 on t1.AGENT_KEY = t2.AGENT_KEY
where not exists (select 1 from table1 t1b
                  where t1b.STATE = t1.STATE
                    and t1b.ACTIVITY_TYPE = t1.ACTIVITY_TYPE
                    and t1b.PRODUCER_TYPE_CD = t1.PRODUCER_TYPE_CD
                    and t1b.ACTIVITY_TSP > t1.ACTIVITY_TSP)
select t.*
from (select t1.*, t2.producer_type_cd,
             row_number() over (partition by t1.state, t1.activity_type, t2.PRODUCER_TYPE_CD
                                order by t1.ACTIVITY_TSP desc) as seqnum
      from table1 t1 join
           table2 t2
           on t1.agent_key = t2.agent_key
     ) t
where seqnum = 1;