每行的最大日期

我在编写语法时遇到了一些困难,该语法将为我提供多个结果的最新日期。有点背景,我从IBM AS400中获取实时数据,我没有SQL表,我通过ODBC连接到表,使用QTODBC创建我的查询,然后将它们导出到Power Bi。 据我所知,从AS400表中提取数据与SQL查询稍有不同,

这是数据的样子,该序列号在不同日期的多次交易。

enter image description here

我可以省略HVUSER来获取最新日期。

select    
HVSERN,MAX(HVTDAT) as Date    
From SERH    
Where HVSERN = '519488536'  (there are thousands of other serials,tens of thousands of transactions)    
Group by HVSERN

HVSERN               HVTDAT

519488536            11/26/2019

当我添加了上次触摸序列的“ HVUSER”列时,我不再能够保留上一个事务。谁能帮我解决这个问题?有人告诉我我需要嵌套查询,是否可以使用子查询来清理旧日期?
我正在寻找的是

HVSERN         HVTDAT       HVUSER

519488536     11/26/2019    VG55
gogo2b2 回答:每行的最大日期

使用row_number() db2 支持此功能。

select * from (
    select HVSERN,row_number() over (partition by HVSERN order by HVTDAT desc) as rn,HVUSER
    from SERH 
    Where HVSERN = '519488536') t where t.rn = 1

select    
   HVSERN,HVUSER,MAX(HVTDAT) as Date    
From SERH    
Where HVSERN = '519488536' 
Group by HVSERN,HVUSER
,

我会推荐async function fetchMock(){ let promise = new Promise(() => { throw 'error fetching result'; }); promise.catch(()=>null); // unused rejection handler return promise; } ORDER BY

FETCH FIRST

如果您希望所有SELECT serh.* FROM SERH WHERE HVSERN = '519488536' ORDER BY HVTDAT DESC FETCH FIRST 1 ROW ONLY; 值都使用此值,那么HVSERN是一种合理的方法。在许多数据库中,相关子查询更快:

ROW_NUMBER()
,

您必须首先获取汇总,然后使用结果将其联接回您的源数据以获取所需的其余数据(在这种情况下为HVUSER)。 试试这个,它应该可以解决问题。

select
    T1.HVSERN,T1.dt,T2.HVUSER
from (
select
    HVSERN,MAX(HVTDAT) as dt
from
    SERH 
group by
    HVSERN) T1

inner join SERH T2 on T1.HVSERN = T2.HVSERN and T1.dt = T2.HVTDAT
;
本文链接:https://www.f2er.com/3024833.html

大家都在问