【问题标题】:Generating expression string in SQL to add values of a column in pivot在 SQL 中生成表达式字符串以在数据透视表中添加列的值
【发布时间】:2016-08-07 09:03:32
【问题描述】:

我想获取这个字符串以在我的其他查询中使用

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

myColumnName_value_1 ORmyColumnName_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)

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

【问题讨论】:

  • 正如我上面所说,我想要这个输出:ISNULL(myColumnName_value_1,0) + ISNULL(myColumnName_value_2,0) + ... + ISNULL(myColumnName_value_N,0)

标签: sql sql-server pivot common-table-expression


【解决方案1】:

这是您修改后的查询。

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 

【讨论】:

  • 但是为什么要连接所有这些列?我猜你正在尝试实现动态旋转。
  • 是的。我想获取新列中每一行的动态列总和。
猜你喜欢
  • 2022-12-15
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多