首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

语句报错,求解!解决方案

2012-04-23 
语句报错,求解!!fyearfperiodfcustomermount20122234274933.80000000002012223441526.6200000000201232344

语句报错,求解!!
fyear fperiod fcustomer mount
20122234274933.8000000000
2012223441526.6200000000
20123234416047.4000000000
2012223467156.1900000000
20123234611765.2300000000
2012123483344.0000000000
20122234810530.0000000000
2012123532855.5800000000
2012223533381.8400000000
2012323534862.3100000000
201222357.5000000000
201234181180.0000000000


想把fperiod转成横式
fyear fcustomer 1 2 3 4 5
.....................................


declare @sql varchar(8000)
set @sql = 'select fcustomer '
select @sql = @sql + ' , max(case fperiod when ''' + fperiod + ''' then fremainamount else 0 end) [' + fperiod + ']'
from (select distinct fperiod from yin5) as a
set @sql = @sql + ' , sum(fremainamount) 总分 from yin5 group by fcustomer '
exec(@sql)  

语法正确,执行时报错,求解。。。
将 varchar 值 '' then fremainamount else 0 end) [' 转换为数据类型为 int 的列时发生语法错误。




[解决办法]

SQL code
declare @sql varchar(8000)set @sql = 'select fcustomer 'select @sql = @sql + ' , max(case fperiod when ''' + ltrim(fperiod) + ''' then fremainamount else 0 end) [' + ltrim(fperiod) + ']'from (select distinct fperiod from yin5) as aset @sql = @sql + ' , sum(fremainamount) 总分 from yin5 group by fcustomer 'exec(@sql)
[解决办法]
整型数值不能直接与字符串相加,需要把整型转为字符型,ltrim()函数是一个去除字符串左空格函数,利用它也可以把整型转为字符型
[解决办法]
树哥正解,昨天我也遇到的!
[解决办法]

declare @sql varchar(8000)
set @sql = 'select fcustomer '
select @sql = @sql + ' , max(case fperiod when ''' + fperiod + ''' then fremainamount else ''0'' end) [' + fperiod + ']'
from (select distinct fperiod from yin5) as a
set @sql = @sql + ' , sum(fremainamount) 总分 from yin5 group by fcustomer '
exec(@sql)

热点排行