首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用重复ID从行中选择最大日期

尝试使用重复ID从行中选择最大日期
EN

Stack Overflow用户
提问于 2022-09-27 10:06:20
回答 1查看 33关注 0票数 -1

我试图使用以下SQL从具有重复ID的行中选择max(日期)

代码语言:javascript
复制
SELECT
ER.ID_PROC_VERSION,
P.ID || ' / ' || PV.COD_PROCEDIMIENTO || ' / ' || P.COD_SIA COD_GC_IPSC_SIA,
PV.DENOMINACION DENOMINACION,

ER.TIPO_ENVIO TIPO_ENVIO,
ER.RESULTADO_ENVIO RESULTADO_ENVIO,
ER.FH_ENVIO FH_ENVIO

FROM ENVIO_REC ER

INNER JOIN PROCEDIMIENTO_VERSION PV
ON ER.ID_PROC_VERSION = PV.ID
INNER JOIN PROCEDIMIENTO P
ON PV.ID_PROCEDIMIENTO = P.ID

WHERE
(ER.ID_PROC_VERSION, ER.FH_ENVIO) IN (SELECT ID_PROC_VERSION, MAX(FH_ENVIO) FROM ENVIO_REC GROUP BY ID_PROC_VERSION)

问题是,具有重复ID的行将被移除,而不是只得到带有最大值的行。日期。你觉得我能改进什么?耽误您时间,实在对不起

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-27 10:11:35

在我看来,看起来像是row_number (或者rank?)分析函数会有帮助。通过每个id_proc_version进行分区,它返回“最高”fh_envio值的1,所以您所要做的就是获取排序最高的行。

就像这样:

代码语言:javascript
复制
WITH
   temp
   AS
      (SELECT er.id_proc_version,
              p.id || ' / ' || pv.cod_procedimiento || ' / ' || p.cod_sia as cod_gc_ipsc_sia,
              pv.denominacion,
              er.tipo_envio,
              er.resultado_envio,
              er.fh_envio,
              --
              ROW_NUMBER ()
                 OVER (PARTITION BY er.id_proc_version
                       ORDER BY er.fh_envio DESC)
                 rn
         FROM envio_rec er
              INNER JOIN procedimiento_version pv
                 ON er.id_proc_version = pv.id
              INNER JOIN procedimiento p ON pv.id_procedimiento = p.id)
SELECT t.*
  FROM temp t
 WHERE t.rn = 1;

(顺便说一句,指定与列名本身完全相同的列别名是没有意义的;这不仅不会简化代码,反而会增加阅读难度)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73865795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档