首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2 SQL -检索字段的最大值以及其他字段

DB2 SQL -检索字段的最大值以及其他字段
EN

Stack Overflow用户
提问于 2018-07-12 08:37:15
回答 1查看 55关注 0票数 1

也许这是个简单的问题,但我想不出一个解决办法

我有一张可能的桌子:

假设这些数据和列:

代码语言:javascript
复制
PERSONA   FECHA_PERF  SECUENCIA2  NIVEL4_RIESGO
---------+---------+---------+---------+-------
24226517  12.06.2018         53.  00           
24226517  12.06.2018         52.  04           
24226517  12.06.2018         51.  04           
24226517  12.06.2018         26.  04           
24226517  12.06.2018         15.  04           
24226517  12.06.2018         14.  04           
24226517  12.06.2018          7.  04           
24226517  08.05.2018         91.  04           
24226517  08.05.2018         90.  04           
24226517  08.05.2018         89.  03           
24226517  08.05.2018         78.  04           
24226517  08.05.2018         77.  04           
24226517  08.05.2018         69.  04           
24226517  08.05.2018         68.  04           
24226517  08.05.2018         67.  04           
24226517  08.05.2018         66.  04           
24226517  08.05.2018         65.  01           
24226517  08.05.2018         64.  04           
24226517  08.05.2018         63.  04           
24226517  08.05.2018         62.  04           
24226517  08.05.2018         61.  04           
24226517  08.05.2018         60.  04           
24226517  08.05.2018         52.  04           
24226517  08.05.2018         51.  04   

FECHA_PERF是日期字段,Secuencia2是整数字段,Nivel4_riesgo是Char(2)字段,角色是char (9)字段。

我需要获得已插入到表中的每个个性化字段的最新值,我需要同时考虑FECHA_PERFSECUENCIA2字段。

该表还有许多其他字段,但为了结果,这些字段是必需的。

查询的预期结果应该是:

代码语言:javascript
复制
--------------+---------
PERSONA  NIVEL4_RIESGO  
--------------+---------
24226517 00  

与这一记录相对应:

代码语言:javascript
复制
---------+---------+---------+---------+-------
PERSONA   FECHA_PERF  SECUENCIA2  NIVEL4_RIESGO
---------+---------+---------+---------+-------
24226517  12.06.2018         53.  00  

你能提供一种可行的方法来实现这一点吗?不知何故,这与子查询相一致,但我想知道是否有更好的方法,特别是在性能方面。我考虑过对每个子查询使用DB2临时表,但是在这个商店里,它们有点深奥,如果我使用它们,它们就不那么高兴了。

代码语言:javascript
复制
SELECT A.PERSONA, A.NIVEL4_RIESGO                                    
FROM DIGEIN.GIPERF_PERS_GPP AS A                                     
  INNER JOIN                                                         
  (  SELECT PERSONA                                                  
           ,MAX(CHAR(VARCHAR_FORMAT(B.FECHA_PERF,'YYYY-MM-DD'),10) ||
                TRIM(TO_CHAR(B.SECUENCIA2,'00'))) AS VALORX          
           ,MAX(FECHA_PERF)                                          
           ,MAX(SECUENCIA2)                                          
     FROM DIGEIN.GIPERF_PERS_GPP AS B                                
     WHERE PERSONA = '24226517'                                      
       AND B.NIVEL4_RIESGO <> ''                                     
     GROUP BY  PERSONA                                               
  ) AS C                                                             
    ON A.PERSONA = C.PERSONA                                         
   AND CHAR(VARCHAR_FORMAT(A.FECHA_PERF,'YYYY-MM-DD'),10) ||         
       TRIM(TO_CHAR(A.SECUENCIA2,'00')) =                            
       C.VALORX                                                      

这个查询结果是:

代码语言:javascript
复制
---------+---------+---
PERSONA   NIVEL4_RIESGO
---------+---------+---
24226517  00   

这正是我所需要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-12 11:05:28

如果我理解正确,这通常是使用row_number()完成的。

代码语言:javascript
复制
select p.*
from (select p.*,
             row_number() over (partition by persona
                                order by fecha_perf desc, secuencia2 desc
                               ) as seqnum
      from DIGEIN.GIPERF_PERS_GPP p
     ) p
where seqnum = 1;

如果你只想要一个人的结果,你可以使用更简单的:

代码语言:javascript
复制
select p.*
from DIGEIN.GIPERF_PERS_GPP p
where persona = XXX
order by fecha_perf desc, secuencia2 desc
fetch first 1 row only;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51300901

复制
相关文章

相似问题

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