Использование другой статьи в StackOverflow (How to split date ranges based on months in SQL Server 2005) Я запустил оператор SELECT
, который разбивает диапазон дат по месяцам и возвращает 2 столбца (DateFrom, DateTo
) в SQL.SQL - преобразование результатов в строку, разделенную запятой
DECLARE @SDate DATE = '2012/08/01'
DECLARE @EDate DATE = '2013/09/01'
SELECT
DATEADD(MONTH, n.Number, @SDate) as DateFrom,
DATEADD(day, -1, DATEADD(MONTH, n.Number, DATEADD(YEAR,-1,@EDate))) as DateTo
FROM
master.dbo.spt_values n
WHERE
n.Number < DATEDIFF(MONTH, @SDate, @EDate)
AND n.Type = 'P'
я теперь нужно добавить каждый из возвращаемых строк в строку, разделяющие столбцы |
(Dateto|Datefrom
) и каждую строку по ,
.
Например, если ваш запустить код, указанный выше результат будет (только для этого примера им, используя только первые 4 строки, но мне нужно их все в одной строке):
R | Date From | Date To
1 | 2012-08-01 | 2012-08-31
2 | 2012-09-01 | 2012-09-30
3 | 2012-10-01 | 2012-10-30
4 | 2012-11-01 | 2012-11-30
Код:
DECLARE @stralldates VarChar(MAX)
/* SET @stralldates = INSERTCODE */
PRINT @stralldates
Что мне нужно PRINT, чтобы вернуться:
2012-08-01|2012-08-31,2012-10-01|2012-10-30,2012-10-01|2012-10-30,2012-11-01|2012-11-30
Я пытался несколько предложений от другие подобные вопросы по StackOverflow (например, CONCAT
) без успеха.
Любая помощь или предложения будут оценены.
Спасибо за вашу помощь, это именно то, что мне нужно! –