获取按日期(年)的最新条目,并将值添加到该行的字段中

时间:2019-05-31 07:28:24

标签: sql sql-server

我将执行以下操作:

运行一个查询,向我返回当年的最新记录,从该记录中提取一个字段。

这可能是我曾用过的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年的条目。

3 个答案:

答案 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.