具有嵌套选择的动态SQL语句

时间:2013-10-03 18:54:46

标签: sql sql-server dynamic insert nested

我有两个表,transformsdesign_fieldstransforms有一个名为transforms的字段,design_fields有一个名为transform的字段。 design_fields包含所有transform行,其中一些是重复行。 transforms(表格)transform(列)是我尝试填充来自transform的{​​{1}}值的内容。

我一直在使用以下查询手动完成其中一些操作。

获取不在design_fields(表格)design_fields(列)中的transform transforms列表:

transform

select transform, COUNT(*) as trans_count from design_fields where transform not in ( select transform from transforms where transform is not null ) group by transform order by trans_count desc design_field插入transform(表格)transforms(列)+其他内容。

transform

虽然这种方法大部分都有效,但我需要执行600多行。这就是为什么我想使用动态查询将该列表中的所有行插入{{ 1}}表。

这是我到目前为止所做的(免责声明:我是动态查询的新手):

insert into transforms (field_id, transform_name, transform)
select field_id, logical_name, 'TRANSFORM NAME GOES HERE' as transform
from fields
where field_id in (
    select field_id
    from design_fields
    where transform = 'TRANSFORM NAME GOES HERE'
)

此语句返回一条错误消息,指出它返回的值超过1。我理解为什么会这样,我只是不知道其他任何方法。

任何帮助,包括将来使用动态查询的指针都将非常感谢!

1 个答案:

答案 0 :(得分:1)

如何使用EXEC语句,您可以将其参数设置为字符串。 exec语句将调用存储过程传递您想要的插入参数。例如:声明@SQL varchar(600);设置@SQL ='select * from yourTable'; EXEC(@SQL);