2014-02-18 183 views
0

我有這樣的一個表:SQL獲取最後記錄按日期

InstallID |InstallationDate 
1   |01-01-2014 
1   |01-02-2014 
1   |01-03-2014 
1   |01-04-2014 
2   |01-01-2014 
2   |01-02-2014 
3   |01-01-2014 
3   |01-02-2014 
3   |01-03-2014 
4   |01-04-2014 
4   |01-05-2014 

,我需要獲得最新的installationDate每個安裝ID

例如

InstallID |InstallationDate 
1   |01-04-2014 
2   |01-02-2014 
3   |01-03-2014 
4   |01-05-2014 

有人可以幫助我如何使用SQL實現上述目標嗎?

回答

1

查詢:

SQLFiddleExample

SELECT t1.InstallID, 
     t1.InstallationDate 
FROM yourTable t1 
LEFT JOIN yourTable t2 
    ON t1.InstallID = t2.InstallID 
    AND t1.InstallationDate < t2.InstallationDate 
WHERE t2.InstallID is null 

結果:

| INSTALLID |    INSTALLATIONDATE | 
|-----------|--------------------------------| 
|   1 | January, 04 2014 00:00:00+0000 | 
|   2 | January, 02 2014 00:00:00+0000 | 
|   3 | January, 03 2014 00:00:00+0000 | 
|   4 | January, 05 2014 00:00:00+0000 | 
+0

魔術,t1.Installationdate小於t2.Installationdate的作品?不應該大於? –

0

請嘗試:

SELECT 
    InstallID, 
    MAX(InstallationDate) 
FROM 
    YourTable 
GROUP BY InstallID 
0

試試這個

通過Group By

SELECT InstallID,MAX(InstallationDate) 
FROM TABLE1 
GROUP BY InstallID 

(或)

通過Row_Number

SELECT InstallID,InstallationDate FROM 
(
SELECT InstallID,InstallationDate, 
     ROW_NUMBER() OVER (PARTITION BY InstallID,InstallationDate ORDER BY InstallID) AS RN, 
     COUNT(*) over (PARTITION BY InstallID,InstallationDate) as CN 
FROM Table1 
) AS T WHERE RN = CN 
+0

笑@提供更多comlicated建議,比第一個 – Alexander

+0

笑@Alexander他需要知道什麼是他可以嘗試的方式 –

0
Select InstallID , MAX(InstallationDate) 
From yourTable 
Group By InstallID 
0

這個嘗試,

SELECT installid, 
     MAX(installationdate) 
FROM <table_name> 
GROUP BY installid 
0

這個嘗試

SELECT InstallID, MAX(InstallationDate) 
FROM <TableName> 
GROUP BY InstallID 
0

我覺得小號simpliest方式是

SELECT t1.InstallID, 
    MAX(t1.InstallationDate) 
FROM yourTable t1 
Group by t1.InstallID