我将执行以下操作:
运行一个查询,向我返回当年的最新记录,从该记录中提取一个字段。
这可能是我曾用过的Tabel:
ID(int,PK) FremdID(int) Erstellung(datetime) Number(int)
1 10 2019-05-31 09:15:41.003 1
2 11 2019-05-31 09:15:42.154 3
所以如果我运行查询,它应该返回带有索引2的行,因为我们在2019年,这是2019年以来的最新条目。
如果我们现在是2020年,则该查询不应返回任何行,因为没有2020年的条目。
答案 0 :(得分:0)
这应该做
SELECT a.Number
FROM [YourTable] a
JOIN (SELECT MAX(Erstellung) AS Erstellung
FROM [YourTable]
WHERE DATEPART(YEAR,Erstellung) = DATEPART(YEAR,GETDATE())
) b ON a.Erstellung = b.Erstellung
答案 1 :(得分:0)
如果我对您的理解正确,这应该会有所帮助:
SELECT TOP(1) *
FROM #Table
WHERE YEAR(Erstellung) = YEAR(GETDATE())
ORDER BY Erstellung DESC
答案 2 :(得分:0)
I would recommend:
SELECT TOP(1) t.*
FROM #Table t
WHERE Erstellung >= DATEFROMPARTS(YEAR(GETDATE()), 1, 1)
ORDER BY Erstellung DESC;
I recommend this because it is index compatible. It can take advantage of an index on (Erstellung DESC)
.
If you use a function like YEAR(Erstellung)
in the WHERE
clause, the index will not be used.