【发布时间】:2013-08-07 09:28:00
【问题描述】:
使用 StackOverflow 上的另一篇文章 (How to split date ranges based on months in SQL Server 2005) 我运行了一个 SELECT 语句,该语句按月拆分日期范围并在 SQL 中返回 2 列 (DateFrom, DateTo)。
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)的几个建议,但均未成功。
任何帮助或建议将不胜感激。
【问题讨论】:
标签: sql-server