SQL Server:选择最大年份

时间:2018-11-30 17:06:43

标签: sql sql-server

我有一个相当大的数据表,其中包含多年的帐户价值。我正在尝试编写一个查询,将简单地回溯到最近一年。

但是我尝试了一些查询,该站点中的一些查询似乎对其他查询有用,但是我无法使其在我的数据集上运行。

表数据如下所示:

Sample Data

因此,在此示例中,我仅需要恢复2018年。我认为可能有效的查询是:

SELECT *
FROM dbo.Accounts A     
INNER JOIN  
    (SELECT [Account No], MAX(Year) AS MaxYear 
     FROM dbo.Accounts
     GROUP BY [Account No]) MaxYear ON A.[Account No] = MaxYear.[Account No] 
                                    AND A.Year = MaxYear.MaxYear

但是,当我查找上面的示例帐号时,这仍然为我提供了关于Max部分的三个记录。

任何帮助将不胜感激。

预先感谢

PS:Year数据类型为Float,而Account No的数据为nvarchar(255)

4 个答案:

答案 0 :(得分:1)

您可以尝试以下操作

SELECT A.*
FROM dbo.Accounts A where A.Year= (select max(year) from dbo.Accounts)

使用顶部

select TOP(1) WITH TIES * from dbo.Accounts
order by Year desc

答案 1 :(得分:1)

然后不按子查询中的帐号分组吗?

SELECT *
FROM dbo.Accounts A     
INNER JOIN  
    (SELECT MAX(Year) AS MaxYear 
    FROM dbo.Accounts
    ) MaxYear

ON A.Year = MaxYear.MaxYear

通过按帐户编号(然后加入)进行分组,您将获得每个帐户的最高年份,而不是整个表格的最高年份。

答案 2 :(得分:1)

尝试以下方法:

SELECT * FROM dbo.Accounts where Year = (Select Max(Year) FROM dbo.Accounts)

答案 3 :(得分:0)

据我了解,year是accountNo列的一部分,这意味着只有第一部分是真实帐号,并且您希望每个帐户的最长(最近)年份

let res: Vec<u8> = buffer
    .iter()
    .map(|x| 0xff)
    .collect();