Как выбрать максимальную дату каждого месяца в базе данных - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь извлечь максимальную дату каждого месяца для последующего объединения, чтобы извлечь в результатах записи / строки, которые соответствуют (внутреннему объединению) этой максимальной даты в Transact-SQL для SQL Server

Основная проблема заключается в том, что на шаге перед преобразованием дат, которые точно соответствуют 1-му или 1-му воскресению месяца, вычитая соответственно 1 или 2 дня. После этого я попробовал выбрать, который я использовал для Max Date каждой недели года (похожее поведение), но он не работал

У меня есть этот выбор для максимальной даты каждой недели и без проблем

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;

Но применение того же поведения с месяцем не может выбрать регистры, преобразованные из 1-го и 2-го числа месяца

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;

в этом случае должно возвращаться Макс. Дата в июне -> 31-5-2019 (дата, которая должна появиться в базе данных, и мы преобразовали ее со 2 июня), но перенастроена 30-5-2019, эта появляется, но 31 -5-2019 больше, поэтому его не нужно возвращать

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 24 июня 2019
SELECT max([date_field]) as date,
FROM [database].[dbo].[Table]
GROUP BY month([date])
ORDER BY month(date) ASC;
0 голосов
/ 24 июня 2019

Предполагая, что в базе данных может быть более одного года, вы должны включить год в расчет:

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;

Точно так же, ваш код на неделю учитывает год, хотя и довольно неуклюже.

0 голосов
/ 24 июня 2019
SELECT working_area, MAX(commission) 
FROM agents 
GROUP BY working_area;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...