表Student_KC :
年度 年级 班级 科目 姓名
2008 初一 1班 语文 AA
2008 初一 1班 数学 BB
2008 初一 1班 英语 CC
...
表manage_subject_table :
年度 年级 班级 星期 节次 科目 备注
2008 初一 1班 星期一 1 语文 早课
2008 初一 1班 星期一 2 英语
2008 初一 1班 星期一 3 数学 午课
2008 初一 1班 星期二 1 数学
...
我要得到的课表如(年度=2008,年级=初一,班级=1班):
节次 星期一 星期二 星期三 星期四 星期五 星期六 星期日
1 AA BB
2 CC
3 BB
___
原来manage_subject_table没有备注的时候,我用的以下语句是非常正确的:
select @sql=@sql+quotename(星期)+'=max(case when 星期='+quotename(星期, '''')+' then 姓名 else '''' end),' from manage_subject_table group by 星期 order by 星期
select @sql=left(@sql, len(@sql)-1),@sql=@sql+' from manage_subject_table A left join Student_KC as B on A.年度=B.年度 and A.年级=B.年级 and A.班级=B.班级 and A.科目=B.科目 where A.年度='''+@Niandu+''' and A.年级='''+@Glad+''' and A.班级='''+@Class1+''' group by 节次'
exec(@sql)
___
我在manage_subject_table的后加了一个备注字段,以上的语句就出错了,不知道错在什么地方?
年度 年级 班级 科目 姓名
2008 初一 1班 语文 AA
2008 初一 1班 数学 BB
2008 初一 1班 英语 CC
...
表manage_subject_table :
年度 年级 班级 星期 节次 科目 备注
2008 初一 1班 星期一 1 语文 早课
2008 初一 1班 星期一 2 英语
2008 初一 1班 星期一 3 数学 午课
2008 初一 1班 星期二 1 数学
...
我要得到的课表如(年度=2008,年级=初一,班级=1班):
节次 星期一 星期二 星期三 星期四 星期五 星期六 星期日
1 AA BB
2 CC
3 BB
___
原来manage_subject_table没有备注的时候,我用的以下语句是非常正确的:
select @sql=@sql+quotename(星期)+'=max(case when 星期='+quotename(星期, '''')+' then 姓名 else '''' end),' from manage_subject_table group by 星期 order by 星期
select @sql=left(@sql, len(@sql)-1),@sql=@sql+' from manage_subject_table A left join Student_KC as B on A.年度=B.年度 and A.年级=B.年级 and A.班级=B.班级 and A.科目=B.科目 where A.年度='''+@Niandu+''' and A.年级='''+@Glad+''' and A.班级='''+@Class1+''' group by 节次'
exec(@sql)
___
我在manage_subject_table的后加了一个备注字段,以上的语句就出错了,不知道错在什么地方?
行列互转_整理贴3 [推荐]
http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
insert into Student_KC values(2008,'初一','1班','语文','AA')
insert into Student_KC values(2008,'初一','1班','数学','BB')
insert into Student_KC values(2008,'初一','1班','英语','CC') create table manage_subject_table(年度 int,年级 varchar(8),班级 varchar(8),星期 varchar(8),节次 int,科目 varchar(8),备注 varchar(8))
insert into manage_subject_table values(2008,'初一','1班','星期一',1,'语文','早课')
insert into manage_subject_table values(2008,'初一','1班','星期一',2,'英语',' ')
insert into manage_subject_table values(2008,'初一','1班','星期一',3,'数学','午课')
insert into manage_subject_table values(2008,'初一','1班','星期二',1,'数学',' ')
godeclare @sql varchar(8000),@Niandu varchar(8),@Glad varchar(8),@Class1 varchar(8)
select @sql='select 节次,',@Niandu='2008',@Glad='初一',@Class1='1班'
select @sql=@sql+quotename(星期)+'=max(case when 星期='+quotename(星期, '''')+' then 姓名 else '''' end),' from manage_subject_table group by 星期 order by 星期
select @sql=left(@sql, len(@sql)-1),@sql=@sql+' from manage_subject_table A left join Student_KC as B on A.年度=B.年度 and A.年级=B.年级 and A.班级=B.班级 and A.科目=B.科目 where A.年度='''+@Niandu+''' and A.年级='''+@Glad+''' and A.班级='''+@Class1+''' group by 节次'
print @sql
exec(@sql)
godrop table Student_KC,manage_subject_table
go
insert into student_kc select '2008','初一','1班','语文','AA'
insert into student_kc select '2008','初一','1班','数学','BB'
insert into student_kc select '2008','初一','1班','英语','CC'create table manage_subject_table(年度 varchar(4),年级 nvarchar(10),班级 nvarchar(10),星期 nvarchar(10),节次 int,科目 nvarchar(10),备注 nvarchar(10))
insert into manage_subject_table select '2008','初一','1班','星期一', 1,'语文', '早课'
insert into manage_subject_table select '2008','初一','1班','星期一', 2,'英语', null
insert into manage_subject_table select '2008','初一','1班','星期一', 3,'数学', '午课'
insert into manage_subject_table select '2008','初一','1班','星期二', 1,'数学', null
go
declare @sql nvarchar(500)
declare @Niandu nvarchar(10),@Glad nvarchar(10),@Class1 nvarchar(10)
select @Niandu='2008',@Glad='初一',@class1='1班'
select @sql='select A.节次, '
select @sql=@sql+quotename(星期)+'=max(case when 星期='+quotename(星期, '''')+' then 姓名 else '''' end),' from manage_subject_table group by 星期 order by 星期
select @sql=left(@sql, len(@sql)-1),@sql=@sql+' from manage_subject_table A left join Student_KC as B on A.年度=B.年度 and A.年级=B.年级 and A.班级=B.班级 and A.科目=B.科目 where A.年度='''+@Niandu+''' and A.年级='''+@Glad+''' and A.班级='''+@Class1+''' group by 节次'
exec(@sql)
--select @sql
go
drop table student_kc,manage_subject_table
/*
节次 星期二 星期一
----------- ---------- ----------
1 BB AA
2 CC
3 BB(3 行受影响)*/