在 SQL 中生成表达式字符串以添加数据透视表中列的值

Generating expression string in SQL to add values of a column in pivot

我想获取此字符串以用于我的其他查询

@cols = 'ISNULL(myColumnName_value_1,0) + ISNULL(myColumnName_value_2,0) + ... + ISNULL(myColumnName_value_N,0)'

myColumnName_value_1myColumnName_value_2 , ... 可以是任何东西。

我的查询是:

DECLARE @cols AS NVARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ' + ISNULL(' + (c.myColumnName) +',0)'
        FROM myTableName c
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

print @cols  

但我得不到我想要的

我想要的打印输出:

ISNULL(myColumnName_value_1,0) + 
ISNULL(myColumnName_value_2,0) + ... + 
ISNULL(myColumnName_value_N,0)

... 因为我不知道名称或列数。

这是您修改后的查询。

DECLARE @cols AS NVARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ' + ISNULL(' + QUOTENAME(c.myColumnName) +',0)'
        FROM myTableName c
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,2,1,'')

print @cols