看下我的句子有什么问题
declare @sql varchar(8000)
set @sql = select 学号,姓名,班级,学期
select @sql = @sql + ,sum(case 科目名称 when +科目名称+ then 成绩 else 0 end) as [+科目名称+],max(case 科目名称 when +科目名称+ then 补考 end [+科目名称+补考]
from (select distinct 科目名称 from 成绩总表) as a
select @sql = @sql+ from 成绩总表 group by 学号,姓名,班级,学期
exec(@sql)
go
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 应用写作补考 附近有语法错误。
在补考的END后面应该有一个AS的。还有,你最后的SQL语句是这样吧?
select 学号,姓名,班级,学期,sum(case 科目名称 when +科目名称+ then 成绩 else 0 end) as [+科目名称+],max(case 科目名称 when +科目名称+ then 补考 end as [+科目名称+补考]
from (select distinct 科目名称 from 成绩总表) from 成绩总表 group by 学号,姓名,班级,学期
看出问题了吗?你有两个同级的FROM啊。我想可能是你发表错了,不应该是写错了。还有,我认为你的设计有问题啊。我看了一遍代码,头很大了,可是还是不怎么明白你要做什么啊。
行转表的一希SQL
declare @sql varchar(8000)
set @sql = select 学号,姓名,班级,学期
select @sql = @sql + ,sum(case 科目名称 when +科目名称+ then 成绩 else 0 end) as [+科目名称+],max(case 科目名称 when +科目名称+ then 补考 end)AS [+科目名称+补考]
from (select distinct 科目名称 from 成绩总表) as a
select @sql = @sql+ from 成绩总表 group by 学号,姓名,班级,学期
exec(@sql)
go
少一个) as 这点东西
declare @sql varchar(8000)
set @sql = select 学号,姓名,班级,学期
select @sql = @sql + ,sum(case 科目名称 when +科目名称+ then 成绩 else 0 end) as [+科目名称+],
max(case 科目名称 when +科目名称+ then 补考 end [+科目名称++补考]
from (select distinct 科目名称 from 成绩总表) as a
select @sql = @sql+ from 成绩总表 group by 学号,姓名,班级,学期
exec(@sql)
go
declare @sql varchar(8000)
set @sql = select 学号,姓名,班级,学期
select @sql = @sql + ,sum(case 科目名称 when +科目名称+ then 成绩 else 0 end) as [+科目名称+],max(case 科目名称 when +科目名称+ then 补考 end) as [+科目名称+补考]
from (select distinct 科目名称 from 成绩总表) as a
select @sql = @sql+ from 成绩总表 group by 学号,姓名,班级,学期
print (@sql)
,sum(case 科目名称 when +科目名称+ then 成绩 else 0 end) as +科目名称+
不加此句‘,max(case 科目名称 when +科目名称+ then 补考 end +科目名称+补考 ’有问题吗?
declare @sql varchar(8000)
set @sql = select 学号,姓名,班级,学期
select @sql = @sql + ,max(case 科目名称 when +科目名称+ then cast(成绩 as varchar(10)) end) [+科目名称+],max(case 科目名称 when +科目名称+ then cast(补考 as varchar(10)) end) [+科目名称+补考]
from (select distinct 科目名称 from 成绩总表) as a
select @sql=@sql+ from 成绩总表 group by 学号,姓名,班级,学期
exec(@sql)
go