读书人

SQL语句编译的时候没有有关问题执行

发布时间: 2012-02-02 23:57:14 作者: rapoo

SQL语句编译的时候没有问题,执行时出错,请问怎么回事?

SQL code
drop table t1create table t1(id varchar(10),cusno varchar(10),price numeric(10,2))insert t1 select 'S012','A',35.02union allselect 'S012','C',38.60union all select 'S013','A',52.00Declare   @S   Varchar(8000) Select   @S='Select   ID,'Select   @S=@S + 'SUM(Case  Cusno   When '''+ Cusno+ ''' Then   Price   Else   0.00   End)   As   Price' + Cusno From   t1   Group   By   Cusno Select   @S   =   @S   +  ' From   t1   Group   By   ID 'EXEC(@S) GO 


在查询分析器中,能编译,执行报错
“服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'Case' 附近有语法错误。”
请问错在哪里?
谢谢!


[解决办法]
SQL code
drop table t1create table t1(id varchar(10),cusno varchar(10),price numeric(10,2))insert t1 select 'S012','A',35.02union allselect 'S012','C',38.60union all select 'S013','A',52.00Declare   @S   Varchar(8000) Select   @S='Select   ID'Select   @S=@S + ',SUM(Case  Cusno   When '''+ Cusno+ ''' Then   Price   Else   0.00   End)   As   Price' + Cusno From   t1   Group   By   Cusno Select   @S   =   @S   +  ' From   t1   Group   By   ID 'exec(@S) GO /*ID         PriceA                                   PriceC                                   ---------- ---------------------------------------- ---------------------------------------- S012       35.02                                    38.60S013       52.00                                    .00*/
[解决办法]
SQL code
declare @s varchar(8000) 
set @s='select id'
select @s=@s +',sum(case cusno when '''+cusno+''' then price else 0.00 end) as price'+cusno
from t1 group by cusno
select @s=@s+' from t1 group by id'
exec (@s)


1\select @s=@s+ ' from t1 group by id ' 在from 前加一个空格


2\另个select @s=@s + ',sum(case cusno when ' ' '+cusno+ ' ' ' then price else 0.00 end) as price '+cusno

as price 后的空格去掉

读书人网 >SQL Server

热点推荐