sql-server-2008 - 动态插入到变量表语句 SQL Server

标签 sql-server-2008

我有一个变量表:

DECLARE @A_Table TABLE(ID INT, att1 VARCHAR(100), att2 nvarchar(200))

我想制作动态sql,所以我在这个表中插入了一些数据(都在一个循环内):
WHILE (@i <= 100) BEGIN         
  SELECT @other_att  = NAME  FROM @other_Table where ID =  @i;
  SET @sql = 'INSERT ' + @A_Table+ '(ID,att1,att2) SELECT '+CAST(@i AS VARCHAR)+' , '''+ @other_att+''', SUM('+ @other_att') FROM '+ @EVEN_OTHER_Table;
EXEC (@sql);

END 

sql 每次看起来像:
INSERT INTO @A_Table SELECT 1 , 'subject', SUM(subject)
INSERT INTO @A_Table SELECT 2 , 'age', SUM(age)
INSERT INTO @A_Table SELECT 3 , 'sex', SUM(sex).... 

执行此操作后:
所以我会得到:
@A_Table:
id    att1   att2
1   subject   4.3
2   age       4.5
3   sex       4.1

但我收到一个错误:
Msg 137, Level 16, State 1, Line 48
Must declare the scalar variable "@A_Table".

那么动态插入变量表的语法是什么?

好的,我已经明白了。

最佳答案

您可以使用 INSERT ... EXEC插入由动态 SELECT 返回的数据的语法。当然,您随后需要删除 INSERT部分来自动态语句。

WHILE (@i <= 100) BEGIN         
  SELECT @other_att  = NAME  FROM @other_Table where ID =  @i;
  SET @sql = 'SELECT '+CAST(@i AS VARCHAR)+' , ''' + @other_att+''', SUM('+ @other_att + ') FROM '+ @EVEN_OTHER_Table;
  INSERT INTO @A_Table (ID,att1,att2)
    EXEC (@sql);
END

关于sql-server-2008 - 动态插入到变量表语句 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196434/

相关文章:

sql - 在 SQL Server 中计算时间差(以分钟为单位)

sql - 需要建议以根据审计表重新创建表的历史记录

sql - 如何创建仅获取表中已更新数据的查询

sql-server - 如何在同一 select 语句中使用条件列值?

sql - 选择最近的记录

SQL Server 使用条件在 VIEW 中添加计算列

sql-server - 确定哪个 SQL Server 数据库占用了 CPU 资源

sql - 需要 MDX 查询总计数

sql - 添加计算项 - SQL Server 2008R2

c# - 将 DateTime 插入 sql server 2008 时出现奇怪的错误