У меня есть следующий запрос, где @BeginTime - это первый день месяца, а @EndTime - последний день месяца.Добавление года и месяца в группу по sql-запросу
SET @BeginTime = RTRIM(@BeginTime) + ' 00:00:00'
SET @EndTime = RTRIM(@EndTime) + ' 23:59:59'
select C.Name , COUNT(DISTINCT D.Id) from DriverLic D
INNER JOIN Clov C WITH (NOLOCK) ON D.CId = C.CId
AND ((D.RDate < @EndTime)
AND (D.UrDate > @BeginTime))
group by C.Name
я получаю выход что-то вроде этого:
Name Count(D.Id)
AC 22
AB 32
CD 11
Я хотел бы получить на выходе что-то вроде этого:
Year Month Name Count(D.id)
2013 8 AC 22
2013 8 AB 32
2013 8 CD 11
Есть ли способ, я могу добиться этого?
1. Ваши параметры не являются частью вашего запроса? 2. Я подозреваю, что очень вероятно, что вы [неправильно понимаете свой диапазон дат] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range -queries.aspx), я полагаю, вы создаете дату со временем '23: 59: 59', поэтому вы можете использовать оператор' between', забыв, что есть моменты после '23: 59: 59' и до' 00 : 00: 00'. – GarethD
эй, я использую BeginTime и EndTime, я оставил его вне вопроса, поскольку я думал, что это упростит чтение. Я предполагаю, что это вызывает путаницу. Позвольте мне отредактировать его, чтобы включить что-то похожее на то, что у меня есть в моем коде .. Спасибо, что указали. Это имеет смысл? – CodeNinja