SQL按日期获取最后一条记录

SQL按日期获取最后一条记录,sql,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-0

我有一张这样的桌子:

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
我需要获取每个安装ID的最新安装日期

e、 g

有人能帮助我如何使用SQL实现上述功能吗?

请尝试:

SELECT
    InstallID,
    MAX(InstallationDate)
FROM
    YourTable
GROUP BY InstallID
试试这个

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

SELECT InstallID,MAX(InstallationDate)
FROM TABLE1
GROUP BY InstallID
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
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
(或)

通过

SELECT InstallID,MAX(InstallationDate)
FROM TABLE1
GROUP BY InstallID
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
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
试试这个

SELECT installid,
       MAX(installationdate)
FROM <table_name>
GROUP BY installid
选择installid,
最大(安装日期)
从…起
按installid分组
试试这个

SELECT InstallID, MAX(InstallationDate)
FROM <TableName>
GROUP BY InstallID
选择InstallID,MAX(InstallationDate)
从…起
按InstallID分组
查询:

SELECT InstallID,MAX(InstallationDate)
FROM TABLE1
GROUP BY InstallID
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
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

我认为最简单的方法是

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

lol@提供了比第一个oneMagic更复杂的建议,t1.Installationdate小于t2.Installationdate如何工作?不应该大于?