行转换列的列数目!!!!

zjb_619 2013-09-24 11:31:05
行转换列的存储过程
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' 附近有语法错误。

行转换列的列数目有限制么????
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjb_619 2013-09-25
  • 打赏
  • 举报
回复
搞定了,谢谢!的确是长度不够
Andy__Huang 2013-09-24
  • 打赏
  • 举报
回复
declare @sql nvarchar(1000) 改为 declare @sql nvarchar(4000)
zjb_619 2013-09-24
  • 打赏
  • 举报
回复
表结构是:jccode jctype djcode djplace 上面那个存储过程发错了,应该是这个:
ALTER procedure [dbo].[c_p_dj2]
(
  @jm nvarchar(100)
)
 AS 
declare @sql varchar(2000)
set @sql = 'select jcmodel,jccode'
select @sql = @sql + ' , max(case djplace when ''' + [djplace] + ''' then djcode else NULL end) [' + [djplace] + ']'
from (select distinct [djplace] from c_v_dj1 where jcmodel=@jm) as a
set @sql = @sql + ' from c_v_dj1 where jcmodel='''+@jm+''' group by jcmodel,jccode'
exec (@sql)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧