我有一个相当大的数据表,其中包含多年的帐户价值。我正在尝试编写一个查询,将简单地回溯到最近一年。
但是我尝试了一些查询,该站点中的一些查询似乎对其他查询有用,但是我无法使其在我的数据集上运行。
表数据如下所示:
因此,在此示例中,我仅需要恢复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)
答案 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();