Приветствия, ребята,
В итоге я добавил два дополнительных «столбца», сгенерированных из исходных данных, которые я мог бы использовать в аргументах отчета, например, Предположим, что пользователь выбирает Дата начала = "Май 2008" Дата окончания = "Фев 2009". Что действительно нужно в запросе, так это дата начала 2008-05-01 с 00:00:01 по 2009-02-28 23:59:59, это сделает это на лету и будет использовать удобные для пользователя даты:
Select DISTINCT
'YearMonth' =
CASE
WHEN MONTH(dtwhen) = 01 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Jan'
WHEN MONTH(dtwhen) = 02 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Feb'
WHEN MONTH(dtwhen) = 03 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Mar'
WHEN MONTH(dtwhen) = 04 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Apr'
WHEN MONTH(dtwhen) = 05 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' May'
WHEN MONTH(dtwhen) = 06 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Jun'
WHEN MONTH(dtwhen) = 07 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Jul'
WHEN MONTH(dtwhen) = 08 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Aug'
WHEN MONTH(dtwhen) = 09 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Sep'
WHEN MONTH(dtwhen) = 10 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Oct'
WHEN MONTH(dtwhen) = 11 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Nov'
WHEN MONTH(dtwhen) = 12 THEN LEFT(CONVERT(varchar, dtwhen, 20),4)+' Dec'
ELSE LEFT(CONVERT(varchar, dtwhen, 20),4)+'Jan' -- DPT
END,
CAST(CAST(YEAR(dtwhen) AS varchar) + '-' + CAST(MONTH(dtwhen) AS varchar) + '-01 00:00:01' AS DateTime) AS MonthBegin,
--Add a date column storing the exact date at the end of the selected month
-- E.g. Jan 2004 becomes Jan 29th 23:59:59
-- It basically adds 1 month to the exact beginning of next month, then rolls back 2 seconds..
DATEADD(SECOND,-2,DATEADD(MONTH,1,CAST(CAST(YEAR(dtwhen) AS varchar) + '-' + CAST(MONTH(dtwhen) AS varchar) + '-01 00:00:01' AS DateTime))) AS MonthEnd
FROM Feedback
ORDER BY MonthBegin DESC
Ключевым моментом, на который следует обратить внимание, является то, что в SSRS вы можете отобразить поле varchar для пользователя ("май 2005") и использовать другое вычисленное базовое значение datetime (2005-05-01 00:00:01) в своем запросе. .