double x = Math.Sqrt(2/3);
MessageBox.Show(x.ToString());
我有一个临时表FirstName&姓。该表还将包含动态生成的列,具体取决于传递给存储过程的参数。动态添加的列可以是10,100或2。
我可以访问上面声明的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]'
变量中生成的列的名称。
列名称采用上面显示的格式,并以逗号(,)
分隔问题:如果我写下面的查询,我可以获得所有动态添加的列所需的所有行。
@DynamicColumns
但是我如何计算动态添加列的总和并将其作为额外的" Total"每行的列。
我会写像
这样的东西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
答案 0 :(得分:1)
您可以创建新的动态T-SQL语句:
DECLARE @DynamicSQLStatement NVARCHAR(MAX) = N'
SELECT *, ' + REPLACE(@DynamicColumns, ',', '+') + ' AS Total
FROM ##TempTable1;'
exec @DynamicSQLStatement
我刚才看到,您在列名中有,
,因此您可以用逗号代替], [
。
REPLACE(@DynamicColumns, '], [', '] + [')