如何在数据库中选择每月的最大日期

时间:2019-06-24 07:26:26

标签: sql sql-server

我正在尝试提取每个月的最大日期,以便以后的联接在结果中提取与SQL Server的Transact-SQL中匹配(内部联接)该最大日期的记录/行

主要问题在于,在转换日期之前,该步骤与该月的1号星期日或2号星期日完全匹配,分别减去1或2天。之后,我尝试了一个选择,将其用于一年中每个星期的“最长日期”(类似的行为),但没有成功

我有这个Select来选择每周的最大日期,没问题

SELECT max([date_field]) as date,
FROM [database].[dbo].[Table]
GROUP BY SUBSTRING(CAST([date] AS NVARCHAR(25)), 8,4) ,Week_Number
ORDER BY week_Number ASC;

但是与月份相同的行为无法选择从mont的1st和2nd转换的寄存器

SELECT max([date_field]) as date,
FROM [database].[dbo].[Table]
GROUP BY SUBSTRING(CAST([date] AS NVARCHAR(25)), 8,4) ,month_Number
ORDER BY month_Number ASC;

在这种情况下,它应该在6月的情况下返回“最大日期”-> 31-5-2019(数据库中出现doenst的日期,并且我们从6月2日开始对其进行了转换),但重新调整为30-5-2019,这一次出现但31 -5-2019更大,因此不应该退货

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

SELECT working_area, MAX(commission) 
FROM agents 
GROUP BY working_area;

答案 1 :(得分:0)

SELECT max([date_field]) as date,
FROM [database].[dbo].[Table]
GROUP BY month([date])
ORDER BY month(date) ASC;

答案 2 :(得分:0)

假设数据库中可能有一年以上,则应在计算中包括年份:

SELECT MAX(t.date_field) as date,
FROM [database].[dbo].[Table] t
GROUP BY YEAR(t.date_field), MONTH(t.date_field)
ORDER BY MAX(t.date_field) ASC;

类似地,您的一周代码考虑了年份,尽管非常小。