选择一个表,其中列从游标中获取值

时间:2018-07-17 14:50:29

标签: sql sql-server

我有两个表:
饲料产品 enter image description here 和proDataSpecification:

enter image description here

我正在尝试从两者创建一个表,因此它应该从“ proDataSpecification”获取“ keyName”,然后在表“ feedproducts”的列中循环并获取这些列的值。最后的结果应该是:

enter image description here

我的代码:

declare @sql nvarchar(max)
declare @proName nvarchar(50)
declare @CursorVar cursor
set @CursorVar= cursor scroll dynamic
for
select column_name
from [test].INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='feedproducts'
open @CursorVar
fetch next from @CursorVar into @proname
while @@FETCH_STATUS=0
begin 
if
   @proName !='' and @proName is not null
   set @sql=
           'select
                 ltrim(rtrim('+@proName+')) as val, 
                 abs(checksum(newid()))%1000 
                 as valId, [test].[dbo].[proDataSpecification].KeyId

          from [test].[dbo].[feedproducts]

          inner join [test].[dbo].[proDataSpecification] on 
         '+@proname+'=proDataSpecification.KeyName

         group by '+@proName+', KeyId';

exec sp_sqlexec @sql
fetch next from @CursorVar into @proName
end;
close @CursorVar;
deallocate @CursorVar;

所以: val列从feedproduct的行中获取值,valId列仅是随机数,keyId列获取值proDataSpecification [keyId]。

我运行了上面的代码,但是有两个问题:

  • 我收到此错误“将nvarchar值'id'转换为数据类型int时转换失败。”
  • 这花了很多时间。

能否请您帮我更正并使其快速。 我没有使用sql server 2008的经验,所以请不要仅添加min and go,请添加说明代替它。谢谢。

0 个答案:

没有答案