【发布时间】:2014-09-20 12:30:29
【问题描述】:
我的输出是正确的,但我想知道 STUFF 是如何工作的。
我有一个简单的查询,它返回 @startDate 和 @endDate 之间的总月数。
我在 STUFF 的帮助下将那几个月存储到 @cols 中。
查询是这样的:
SELECT DISTINCT ','
+ Quotename(CONVERT(CHAR(10), startdate, 120))
FROM #tempdates
-
查询中的
- "," 应在值之前打印,但打印如下 O/P。
- 如果我从我得到空值的东西中删除 XML 路径。
- STUFF 如何与 XML 路径一起工作
这是我的输出:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@startdate datetime = '1-Jan-2014',
@enddate datetime = '1-Jun-2014'
;with cte (StartDate, EndDate) as
(
select min(@startdate) StartDate, max(@enddate) EndDate
union all
select dateadd(mm, 1, StartDate), EndDate
from cte
where StartDate < EndDate
)
select StartDate
into #tempDates
from cte
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(convert(CHAR(10), StartDate, 120))
from #tempDates
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
select @cols
drop table #tempDates
【问题讨论】:
-
感谢@Gidil 编辑,但我需要帮助来理解内容。
-
老实说,我认为您应该在帖子中的任何地方都将 STUFF 这个词大写,否则看起来您只是想知道东西是如何工作的,您知道的,东西,东西,thingamajigs。
标签: sql sql-server xml sql-server-2008