从openquery表中选择信息,其中行包含最大日期

时间:2016-01-13 07:20:35

标签: sql sql-server

我有这个问题:

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,我想只选择它是最后一个dateTime_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

我该怎么做?

2 个答案:

答案 0 :(得分:2)

 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方式从1开始为每个Kode_AK组分配编号。之后我们只用1来选择这些记录。

答案 1 :(得分:0)

我不确定,但它可能对你有帮助。

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')