我有一个表,其中包含多年中每个月的每一天的多个记录。有人可以帮我写一个查询,该查询只返回每个月的最后一天。
SQL Server(其他DBMS将相同或 非常 相似地工作):
SELECT * FROM YourTable WHERE DateField IN ( SELECT MAX(DateField) FROM YourTable GROUP BY MONTH(DateField), YEAR(DateField) )
索引在DateField这里很有帮助。
DateField
PS:如果您DateField包含时间值,则上面的内容将为您提供每个月的 最后一条记录 ,而不是 最后一天的 记录。在这种情况下,请使用一种方法在进行比较之前将datetime减小为其日期值,例如this。