1
我正在使用代码将特定数据从行转移到列,当我在小样本中使用它时,它工作正常,但对于约3.4百万行的原始样本它回答这样的:SQL Server 2016转置某些数据从行到列
消息511,级别16,状态1,2号线
无法创建大小36912的一排这比8060
允许的最大行尺寸更大(更详细信息:) SQL Server 2008: Rows into columns in a dynamic way "HELP" with the code
代码:
declare @sql nvarchar(max);
declare @fields nvarchar(max);
set @fields=stuff((select ',['+column0+']'
from dll_ptbv
where column0 not in ('Code','Mnemonic')
group by column0
order by case when column0='Name' then 0 else 3 end
,column0
for xml path('')
,type
).value('.','nvarchar(max)')
,1 ,1 ,'');
[email protected]='select'[email protected]
+ 'from (select column0
,column1
,sum(rn1*rn2) over(order by rn2) as rn
from (select column0
,column1
,case when column0=''Name'' then 1 else 0 end as rn1
,row_number() over(order by (select null)) as rn2
from dll_ptbv
) as a
) as a
pivot (max(column1) for column0 in ('[email protected]+')) as p
order by [Name]';
execute sp_executesql @sql;
你们是不是在任何地方插入你的结果是否可行? – GarethD
你是什么意思“insert .. anywhere?” –
我的意思是你将它们插入表格中(临时或永久)。这个错误通常是由于IN_ROW_DATA超过8kb而试图插入一行造成的。 – GarethD