2016-01-13 67 views
0

我有這個疑問:從OPENQUERY表,其中列有最大日期選擇信息

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

它WIL積結果:

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 

我該怎麼辦?

+0

AE的Nama應該是Finansa的輸出嗎? –

回答

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開始的每個Kode_AK組。之後,我們只用1選擇這些記錄。

+0

它的工作原理!謝謝:) –

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

請注意,如果對於某個'Kode_AK',可以存在多個具有相同值的'Tgl_insert',並且該值恰好是最大值,該版本將爲該'Kode_AK'返回多行。根據'Kode_AK'返回唯一確保只有一行的方法是使用dcieslak的版本。 –

相關問題