从打开的查询表中选择行具有最大日期的信息



我有这个查询:

select Kode_AK, 
       Nama,
       Tgl_insert as dateTime_entry 
  from openquery([ARMS], 'select * from KEANGGOTAAN.dbo.LOG_NAMA')

它将产品结果:

Kode_AK| Nama   |   dateTime_entry
AA     |Aperdi  |   11/29/2002 0:09
AB     |Lumbung |   11/29/2002 0:10
AC     |Trisula |   11/29/2002 0:11
AD     |Kapita  |   11/29/2002 0:12
AD     |OSO     |   3/30/2011 11:38
AE     |Jasereh |   11/29/2002 09:23
AE     |Paribas |   11/29/2002 09:24
AE     |Tradeez |   11/29/2002 09:25
AE     |Finansa |   11/29/2002 09:26
AF     |Harita  |   11/29/2002 09:27

正如你所看到的,有一行的Kode_AK相同,但日期时间不同。对于相同的Kode_AK,我只想选择它是最后一个日期Time_entry的数据。所以结果会是这样的:

Kode_AK| Nama   |   dateTime_entry
AA     |Aperdi  |   11/29/2002 0:09
AB     |Lumbung |   11/29/2002 0:10
AC     |Trisula |   11/29/2002 0:11
AD     |OSO     |   3/30/2011 11:38
AE     |Harita  |   11/29/2002 09:26
AF     |Harita  |   11/29/2002 09:27

我该怎么做?

 select Kode_AK, dateTime_entry, Nama
 from (
 select 
 ROW_NUMBER () over ( partition by Kode_AK order by dateTime_entry desc ) rn,
 Kode_AK, Nama,
 dateTime_Entry
 from 
 LOG_NAMA ) A 
 where rn = 1

上面的查询以desc方式为每组Kode_AK分配从1开始的数字。之后,我们只选择这些带有1的记录。

我不确定,但它可能会对您有所帮助。

SELECT Kode_AK, Nama, Tgl_insert as dateTime_entry 
FROM OPENQUERY([ARMS],
'SELECT * FROM KEANGGOTAAN.dbo.LOG_NAMA t
JOIN
(
    SELECT Kode_AK, MAX(Tgl_insert)  
    FROM KEANGGOTAAN.dbo.LOG_NAMA
    GROUP BY Kode_AK
)AS temp 
ON temp.Kode_AK = t.Kode_AK AND temp.Tgl_insert = t.Tgl_insert')

最新更新