如何查看sql server中的变量值


DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column 
SELECT @ColumnName= ISNULL(@ColumnName + ',','') + QUOTENAME(Week)
FROM (SELECT DISTINCT Week FROM #yt) AS Weeks
--execute (@ColumnName)
print @ColumnName

输出为[1],[2],[3]

谁能解释一下这是怎么回事

工作方式很简单:

当在串行计划(非并行)中运行时,从SELECT出来的每一行都将获取@ColumnName的现有值并将其连接起来。

如果在并行计划中运行,由于不同线程之间的竞争条件,它可能返回不正确的结果。因此,在这样的查询中必须使用OPTION(MAXDOP 1)

在任何情况下,即使是串行计划也不能保证SQL Server返回正确的结果,只是人们一直观察到它们是这样做的,而且这可能会改变。

所以你最好使用合适的聚合函数,如STRING_AGGFOR XML PATH

最新更新