动态插入变量表语句 SQL Server

2024-02-21

我有一个变量表:

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态插入变量表语句 SQL Server 的相关文章

  • 我可以计算 SQL Server 中两个日期之间有多少个周末吗?

    我正在计算为一份报告租用设备的收入 其中 周末的招聘成本会比平日增加10 那么我如何计算两个日期之间有多少个周末呢 在报告查询中 我也不能使用DECLARE 有人可以帮我做到这一点吗 太感谢了 这应该有效 DECLARE StartDate
  • SSMS 对象资源管理器 - 连接到 Azure DB 时选择丢失的前 N ​​行

    我刚刚将 SSMS 升级到 2008 R2 我缺少从表中选择前 1000 行的选项 如下所示 我的看起来像这样 我知道如何更改显示的行数 但根本不存在这些选项 几年前我看到有人为此提交了一个错误 但没有解决方法 我不知道该怎么办 有任何想法
  • 声纳+MS SQL数据库

    我正在尝试使用 mssql 服务器数据库初始化声纳 但我不能 使用 Microsoft SQL Server Management Studio 我创建了用户名 sonar 和密码 sonar 的用户 并向同时创建的 sonar 数据库授予
  • 从 SQL Server 2008 的 .mdf 和 .ldf 文件恢复数据库

    由于某种原因 我必须卸载 SQL Server 2008 R2 但在此之前我复制了两个文件 mdf and ldf 我的数据库来自 C Program Files x86 Microsoft SQL Server MSSQL10 50 MS
  • 删除 DB 但不删除 *.mdf / *.ldf

    我正在尝试自动化分离和删除数据库的过程 通过 VBS objshell run 如果我手动使用 SSMS 分离和删除我可以将数据库文件复制到另一个位置 但是如果我使用 sqlcmd U sa P MyPassword S local Q A
  • 在调用存储过程 Sql Server 2008 时使用嵌套存储过程结果

    是否可以在另一个存储过程中使用一个存储过程的结果 I e CREATE PROCEDURE dbo Proc1 ID INT mfgID INT DealerID INT AS BEGIN DECLARE Proc1Result UserD
  • 数据库不存在。确保名称输入正确

    为什么我会出现这个错误 如果您查看屏幕截图 您将看到数据库 仅当我连接到两个数据库引擎时才会发生这种情况 它仅检测下面数据库引擎中的数据库 而不检测突出显示的数据库 除了关闭应用程序并仅打开一个数据库引擎之外 还有其他方法可以使用我的数据库
  • 如何:使用 SQL Server 2008 创建自动更新修改日期的触发器

    很高兴知道如何创建一个自动更新的触发器modifiedDate我的 SQL Server 表中的列 Table 时间输入 Id PK UserId FK Description Time GenDate ModDate 触发代码 TR Ti
  • 获取一组记录之间的时间差

    我有一个具有以下结构的表 ID ActivityTime Status 19 2013 08 23 14 52 1 19 2013 08 23 14 50 1 19 2013 08 23 14 45 2 19 2013 08 23 14 3
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • 批量插入不适用于 NULL 数据

    当我从 CSV 文件将批量数据插入到表中时 它不起作用 显示错误 第 2 行第 9 列的批量加载数据转换错误 类型不匹配或指定代码页的字符无效 csv 文件中的第 9 列值为空 我该如何处理这个问题 根据这些信息 我认为目标表的特定字段被定
  • 如何搜索表中的所有列?

    如何在 SQL Server 中搜索表的所有列 SELECT FROM yourtable WHERE val IN field1 field2 field3 field4 如果您正在寻找精确的全场比赛 如果你正在寻找子字符串匹配 你将不得
  • T-SQL 是否可以通过单个快速操作进行更新/插入

    假设我有一个表 我想插入一行 新行的键可能已经与表中现有行的键匹配 在这种情况下我想更新现有行 或者 它可能不存在于表中 在这种情况下应插入新行 执行此类操作最有效的方法是什么 我想先做一个SELECT 也许与EXISTS 查看是否存在特定
  • SQL Server JOIN 中的 IsNumeric

    我的问题似乎很简单 但我被困在这里 我有一个表 其中有一个名为 SrcID 的 nvarchar 列 我在其中存储数字和字符串 现在 当我尝试在 加入 条件下检查该列上的 IsNumeric 时 如下所示 ISNUMERIC SrcID 1
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • 如何在 SQL Server 中不循环更新列?

    出于性能角度的考虑 我只需要删除循环并使用一些联接或其他解决方案来更新 Result 表中的数据并获得循环返回的相同结果 标量函数 CREATE FUNCTION MultiplyerScl a INT b INT RETURNS INT
  • 通过 ASP.NET 网站管理员工具获得 Asp.Net 会员资格

    我使用 aspnet regsql 创建了一个数据库 该数据库是在 sql server 2008 中创建的 而不是在我的项目中的数据文件夹中创建的 我需要手动将其移动到该文件夹 吗 接下来 在网站管理工具中 我转到提供商部分并单击 测试
  • 消息 203,级别 16,状态 2,不是有效标识符

    我收到以下错误 消息 203 级别 16 状态 2 过程 getQuestion 第 18 行名称 select top 1 from tlb Question inner join tlb options on tlb options q
  • 如何将表移动到 T-SQL 中的架构中

    我想使用 T SQL 将表移动到特定架构中 我正在使用 SQL Server 2008 ALTER SCHEMA TargetSchema TRANSFER SourceSchema TableName 如果你想搬家all表到一个新的模式
  • 如何选择列值不不同的每一行

    我需要运行一个 select 语句 返回列值不不同的所有行 例如 EmailAddress 例如 如果表格如下所示 CustomerName EmailAddress Aaron email protected cdn cgi l emai

随机推荐