Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何获取select查询中动态生成的列的行总数_Sql Server_Tsql_Sql Server 2012 - Fatal编程技术网

Sql server 如何获取select查询中动态生成的列的行总数

Sql server 如何获取select查询中动态生成的列的行总数,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,我有一个临时表,它有FirstName和LastName列。根据传递给存储过程的参数,该表还将包含动态生成的列。动态添加的列可以是10、100或2 我可以在上面声明的@DynamicColumns变量中访问生成列的名称 列名的格式如上所示,并用逗号(,)分隔 问题:如果我写下面的查询,我可以通过所有动态添加的列获得我想要的所有行 DECLARE @DynamicColumns VARCHAR(MAX) SET @DynamicColumns = '[Mon, Oct 31 2016], [Tue

我有一个临时表,它有FirstName和LastName列。根据传递给存储过程的参数,该表还将包含动态生成的列。动态添加的列可以是10、100或2

我可以在上面声明的
@DynamicColumns
变量中访问生成列的名称

列名的格式如上所示,并用逗号(,)分隔

问题:如果我写下面的查询,我可以通过所有动态添加的列获得我想要的所有行

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]'
但如何计算动态添加的列的总和,并将其作为每行的额外“总计”列返回呢

我会写一些类似的东西

SELECT * FROM ##TempTable1
但是这些列将是动态的,所以这不起作用。(但是我可以访问变量
@DynamicColumns
中的列名)

我需要的是下面的内容,但是如何从变量
@DynamicColumns
中提取我的列名并得到它们的总和

SELECT *, [Mon, Oct 31 2016] + [Tue, Nov  1 2016] + [Wed, Nov  2 2016] + [Thu, Nov  3 2016] AS Total
FROM ##TempTable1

您可以创建新的动态T-SQL语句:

SELECT *, SUM(@DynamicColumns) AS Total -- the Sum of all columns in @DynamicColumns
FROM ##TempTable1
我刚刚看到,您在列名中有
,因此您可以替换
,[
而不是逗号

DECLARE @DynamicSQLStatement NVARCHAR(MAX) = N'
SELECT *, ' + REPLACE(@DynamicColumns, ',', '+') + '  AS Total 
FROM ##TempTable1;'

exec @DynamicSQLStatement
REPLACE(@DynamicColumns, '], [', '] + [')