【发布时间】:2016-12-01 17:13:50
【问题描述】:
DECLARE @DynamicColumns VARCHAR(MAX)
SET @DynamicColumns = '[Mon, Oct 31 2016], [Tue, Nov 1 2016], [Wed, Nov 2 2016], [Thu, Nov 3 2016],[Many More Columns Can be Added]'
我有一个包含 FirstName 和 LastName 列的临时表。该表还将包含根据传递给存储过程的参数动态生成的列。动态添加的列可以是 10、100 或 2。
我可以在上面声明的@DynamicColumns 变量中访问生成列的名称。
列名采用上面显示的格式,并用逗号 (,) 分隔
问题:如果我编写下面的查询,我可以得到我想要的所有行以及所有动态添加的列。
SELECT * FROM ##TempTable1
但是我如何计算动态添加的列的总和并将其作为每行的额外“总计”列返回。
我会写类似的东西
SELECT *, [Mon, Oct 31 2016] + [Tue, Nov 1 2016] + [Wed, Nov 2 2016] + [Thu, Nov 3 2016] AS Total
FROM ##TempTable1
但列将是动态的,所以这不起作用。(但我可以访问变量 @DynamicColumns 中的列名)
我需要的是类似下面的内容,但我如何从变量 @DynamicColumns 中提取列名并得到它们的总和?
SELECT *, SUM(@DynamicColumns) AS Total -- the Sum of all columns in @DynamicColumns
FROM ##TempTable1
【问题讨论】:
标签: sql-server tsql sql-server-2012