按最旧和最新的SQLITE分组

我有两个查询:

查询1:

select afp,max(fecha) as fecha
from valcuota 
where afp ='MODELO'
UNION
select afp,date(max(fecha),'-31 days') as fecha
from valcuota 
where afp ='MODELO'

按最旧和最新的SQLITE分组


查询2

select strftime('%m-%Y',periodo) as periodo_str,fondo,periodo
from (select fondo,periodo 
from movimientos
group by fondo,periodo
order by count(periodo) desc
) temp where temp.fondo = fondo
group by periodo_str 
order by periodo desc
limit 2

按最旧和最新的SQLITE分组

并且我需要以这样的方式将它们加入:query1.fecha的最早和最新日期与query2.periodo相关联

这就是我需要的


按最旧和最新的SQLITE分组

ZYTLXJ 回答:按最旧和最新的SQLITE分组

在每个查询中使用ROW_NUMBER()创建一个公共列,您可以在这些列上加入它们:

select
  t2.periodo_str,t2.fondo,t2.periodo,t1.afp,t1.fecha 
from (
  select t.*,row_number() over (order by t.fecha) rn
  from (
    select afp,max(fecha) as fecha
    from valcuota 
    where afp ='MODELO'
    UNION
    select afp,date(max(fecha),'-31 days') as fecha
    from valcuota 
    where afp ='MODELO'
  ) t
) t1 inner join  (
  select t.*,row_number() over (order by t.periodo) rn
  from ( 
    select strftime('%m-%Y',periodo) as periodo_str,fondo,periodo
    from (
      select fondo,periodo 
      from movimientos
      group by fondo,periodo
      order by count(periodo) desc
    ) temp where temp.fondo = fondo
    group by periodo_str 
    order by periodo desc
    limit 2
  ) t
) t2 on t2.rn = t1.rn
本文链接:https://www.f2er.com/3140332.html

大家都在问