也许这可能只是一个简单的问题,但是,我无法找出解决方案
我有这个预期表:
假设此数据和列:
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)字段
我需要获取已插入表中每个 PERSONA 字段的最新NIVEL4_RIESGO值,我需要同时考虑 FECHA_PERF 和 SECUENCIA2 字段
该表还有许多其他字段,但是为了便于查询,这些是必填字段
,查询的期望结果应为:
--------------+---------
PERSONA NIVEL4_RIESGO
--------------+---------
24226517 00
与该记录相对应的
---------+---------+---------+---------+-------
PERSONA FECHA_PERF SECUENCIA2 NIVEL4_RIESGO
---------+---------+---------+---------+-------
24226517 12.06.2018 53. 00
能否请您提供实现此目的的可能方法?我已经以某种方式与子查询进行了排序,但是我想知道是否有更好的方法可以做到这一点,特别是在性能方面。我已经考虑过为每个子查询使用DB2临时表,但是在这家商店中,它们对此有些深奥,如果我使用它们,他们会感到不满意
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
此查询结果是:
---------+---------+---
PERSONA NIVEL4_RIESGO
---------+---------+---
24226517 00
我需要什么。
答案 0 :(得分:0)
如果我理解正确,通常可以使用quantity = Integer.parseInt(quantityText.getText().toString());
:
row_number()
如果只想要一个人的结果,则可以使用更简单的方法:
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;