0
我一直试图在保留两个索引列的情况下使用动态列取消转移大型数据库。我无法将它作为新表格保存为SQL Server Management Studio中的新表格。现在我得到'一个INSERT语句不能包含一个将值赋给一个变量的SELECT语句。'使用Unpivot和动态列创建新表
DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);
create table pivot_columns ([Prime Item Nbr] NVARCHAR(MAX), [Store Nbr] NVARCHAR(MAX))
insert into pivot_columns
select @cols = STUFF((SELECT distinct ',' +
QUOTENAME(column_name)
FROM information_schema.columns
WHERE table_name = 'POSSalesMicro'
AND COLUMN_NAME <> 'Prime Item Nbr'
AND COLUMN_NAME <> 'Store Nbr'
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, 1, 1, '');
SELECT @query = 'WITH Unpivoted
AS
(
SELECT [Prime Item Nbr], [Store Nbr], columns, value
FROM POSSalesMicro
UNPIVOT
(
columns
FOR value IN('+ @cols + ')
) AS u
)
SELECT
[Prime Item Nbr],
[Store Nbr],
columns,
CAST(CASE WHEN value LIKE ''% POS Sales'' THEN REPLACE(value,''POS Sales'', '''')
WHEN value LIKE ''LR%'' THEN REPLACE(value,''LR '', '''')
END AS INT) AS WMWeek
FROM Unpivoted';
EXECUTE(@query);
我第一次看到动态的支点。哈哈,开始难以调试。 +1 – scsimon