一尘不染

使用SQL返回每个月的最后一天

sql

我有一个表,其中包含多年中每个月的每一天的多个记录。有人可以帮我写一个查询,该查询只返回每个月的最后一天。


阅读 146

收藏
2021-03-17

共1个答案

一尘不染

SQL Server(其他DBMS将相同或 非常 相似地工作):

SELECT
  *
FROM
  YourTable
WHERE
  DateField IN (
    SELECT   MAX(DateField)
    FROM     YourTable
    GROUP BY MONTH(DateField), YEAR(DateField)
  )

索引在DateField这里很有帮助。

PS:如果您DateField包含时间值,则上面的内容将为您提供每个月的 最后一条记录 ,而不是 最后一天的
记录。在这种情况下,请使用一种方法在进行比较之前将datetime减小为其日期值,例如this

2021-03-17