Sql server 如何获取select查询中动态生成的列的行总数
我有一个临时表,它有FirstName和LastName列。根据传递给存储过程的参数,该表还将包含动态生成的列。动态添加的列可以是10、100或2 我可以在上面声明的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
@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, '], [', '] + [')