我想从数据表OrderDetails(OrderID int,ProductID int)换成一个稀疏矩阵形式的表,字段名为OrderID和 OrderDetails中的非重复ProductID ,怎么做?我自己尝试了下,可是出现了错误,提示declare @id int错了,代码如下:
create table order_pro (OrderId int);
declare @id int
declare cursor1 cursor for --定义游标cursor1
select distinct(ProductID) from dbo.OrderDetails --使用游标的对象(跟据需要填入select文)
open cursor1 --打开游标
fetch next from cursor1 into @id --将游标向下移1行,获取的数据放入之前定义的变量@id中
print @id
while @@fetch_status=0 --判断是否成功获取数据
begin
declare @mysql nvarchar(100)
set @mysql= 'alter table order_pro add '+cast(@id as nvarchar(6))+ ' int'
--declare SQLSA FROM @mysql;
EXECUTE(@mysql);
fetch next from cursor1 into @id --将游标向下移1行
end
close cursor1 --关闭游标
deallocate cursor1
create table order_pro (OrderId int);
declare @id int
declare cursor1 cursor for --定义游标cursor1
select distinct(ProductID) from dbo.OrderDetails --使用游标的对象(跟据需要填入select文)
open cursor1 --打开游标
fetch next from cursor1 into @id --将游标向下移1行,获取的数据放入之前定义的变量@id中
print @id
while @@fetch_status=0 --判断是否成功获取数据
begin
declare @mysql nvarchar(100)
set @mysql= 'alter table order_pro add '+cast(@id as nvarchar(6))+ ' int'
--declare SQLSA FROM @mysql;
EXECUTE(@mysql);
fetch next from cursor1 into @id --将游标向下移1行
end
close cursor1 --关闭游标
deallocate cursor1
(
OrderId INT
);
DECLARE @id INT,@mysql NVARCHAR(100)
DECLARE cursor1 CURSOR
FOR
--定义游标cursor1
SELECT DISTINCT(ProductID)
FROM dbo.OrderDetails --使用游标的对象(跟据需要填入select文)
OPEN cursor1 --打开游标
FETCH NEXT FROM cursor1 INTO @id --将游标向下移1行,获取的数据放入之前定义的变量@id中
PRINT @id
WHILE @@fetch_status=0 --判断是否成功获取数据
BEGIN
SET @mysql = 'ALTER TABLE order_pro ADD ['+CAST(@id AS NVARCHAR(6))+'] INT'
--declare SQLSA FROM @mysql;
EXECUTE(@mysql);
FETCH NEXT FROM cursor1 INTO @id --将游标向下移1行
END
CLOSE cursor1 --关闭游标
DEALLOCATE cursor1
只改语法。