我有两个表:
饲料产品
和proDataSpecification:
我正在尝试从两者创建一个表,因此它应该从“ proDataSpecification”获取“ keyName”,然后在表“ feedproducts”的列中循环并获取这些列的值。最后的结果应该是:
我的代码:
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]。
我运行了上面的代码,但是有两个问题:
能否请您帮我更正并使其快速。 我没有使用sql server 2008的经验,所以请不要仅添加min and go,请添加说明代替它。谢谢。