行转换列的存储过程
ALTER PROCEDURE [dbo].[c_p_dj]
(
@bj nvarchar(100)
)
AS
declare @sql nvarchar(1000)
select @sql=isnull(@sql+',','')
+'max(case djplace when '''+djplace+''' then djcode else NULL end) as ['+djplace+']'
from (select distinct djplace from c_v_dj1 where jcmodel=@bj) as a
set @sql='select jccode,'+@sql+' from c_v_dj1 where jcmodel='''+@bj+''' group by jccode'
exec(@sql)
列:djplace有30条以下的数据时,运行正确,超过30条数据时,运行存储过程就出错:消息 102,级别 15,状态 1,第 1 行
'cas' 附近有语法错误。
行转换列的列数目有限制么????
------解决方案--------------------
declare @sql nvarchar(1000)
改为
declare @sql nvarchar(4000)