xszl(学生资料)
id xh xm bjid
1 X001 X1 1
2 X002 X2 1
3 X003 X3 1
--------------------------------
kscj(考试成绩)
xh ksm kmm kscj BJ
X001 中考 语文 60 初一
X002 中考 语文 60 初一
X003 中考 语文 60 初一
X001 中考 数学 60 初一
X002 中考 数学 60 初一
X003 中考 数学 60 初一X001 中考 数学 60 初二
X002 中考 数学 60 初二
X003 中考 数学 60 初二--------------------------------
bjgl(班级管理)
--------------------------------
id bj
1 初一
2 初二
--------------------------------
想得到以下结果:
--------------------------------
xh xm ksm bj 语文 数学
X001 X1 中考 初一 60 60
X002 X2 中考 初一 60 60
X003 X3 中考 初一 60 60
--------------------------------
我这是样写的
declare @sql varchar(8000)
declare @bj varchar(60)
set @bj='初一(1)班'
set @sql=' select kscj.ksm as 考试名, xszl.xh as 学号, xszl.xm as 姓名'
select @sql=@sql+', max(case kmm where '''+kmm+''' then kscj else 0 end ) ['+kmm+']'
from (select distinct kmm from kscj where bj= '初一(1)班') as a
set @sql=@sql + ' from kscj,xszl,bjgl where bjgl.id=xszl.bjid and xszl.xh=kscj.xh group by
kscj.ksm,xszl.xh,xszl.xm'
exec(@sql)但是总是提示我 where 附近有语法错误
请各位帮看一下哪里错了?想知道为什么错了不想一味的寻求答案!
id xh xm bjid
1 X001 X1 1
2 X002 X2 1
3 X003 X3 1
--------------------------------
kscj(考试成绩)
xh ksm kmm kscj BJ
X001 中考 语文 60 初一
X002 中考 语文 60 初一
X003 中考 语文 60 初一
X001 中考 数学 60 初一
X002 中考 数学 60 初一
X003 中考 数学 60 初一X001 中考 数学 60 初二
X002 中考 数学 60 初二
X003 中考 数学 60 初二--------------------------------
bjgl(班级管理)
--------------------------------
id bj
1 初一
2 初二
--------------------------------
想得到以下结果:
--------------------------------
xh xm ksm bj 语文 数学
X001 X1 中考 初一 60 60
X002 X2 中考 初一 60 60
X003 X3 中考 初一 60 60
--------------------------------
我这是样写的
declare @sql varchar(8000)
declare @bj varchar(60)
set @bj='初一(1)班'
set @sql=' select kscj.ksm as 考试名, xszl.xh as 学号, xszl.xm as 姓名'
select @sql=@sql+', max(case kmm where '''+kmm+''' then kscj else 0 end ) ['+kmm+']'
from (select distinct kmm from kscj where bj= '初一(1)班') as a
set @sql=@sql + ' from kscj,xszl,bjgl where bjgl.id=xszl.bjid and xszl.xh=kscj.xh group by
kscj.ksm,xszl.xh,xszl.xm'
exec(@sql)但是总是提示我 where 附近有语法错误
请各位帮看一下哪里错了?想知道为什么错了不想一味的寻求答案!
解决方案 »
- sqlserver2005或者2008怎么开启xp_cmdshell啊。常用的方法不行~
- 数据库从2000升级到2005,安全里用户dbo登录名怎么为空了
- 求一条SQL语句......
- 本机,SQL2000,在系统帐号SA被删或者密码被篡改的情况下,如何才能管理维护数据库
- 想用SQL 中查询出哪个字段是标识字段的SQL 怎么写??
- 关于sql的数据恢复问题
- 疑难问题,对微软BI,kerberos和sharepoint使用熟悉的高手请进
- 100分,求助关于全文索引的问题。搜索超时!
- SQL SERVER突然掉电会导致数据不一致吗
- 怎么把一个表中的某些字段的数据拷贝的另一表中
- 请教sql,谢谢
- mssql单个表备份问题?
尽量自己搞定它!不信了
(
id int,
xh nvarchar(20),
xm nvarchar(20),
bjid int
)
create table #kscj
(
xh nvarchar(20),
ksm nvarchar(20),
kmm nvarchar(20),
kscj int,
bj nvarchar(20)
)
create table #bjgl
(
id int,
bj nvarchar(20)
)
insert into #xszl
select 1 , 'X001', ' X1', 1 union all
select 2, 'X002', 'X2' , 1 union all
select 3, 'X003', 'X3' , 1 insert into #kscj
select 'X001' ,'中考' , '语文' , 60 , '初一' union all
select 'X002' ,'中考' , '语文' , 60 , '初一' union all
select 'X003' ,'中考' , '语文' , 60 , '初一' union all
select 'X001' ,'中考' , '数学' , 60 , '初一' union all
select 'X002' ,'中考' , '数学' , 60 , '初一' union all
select 'X003' ,'中考' , '数学' , 60 , '初一' union allselect 'X001' ,'中考' , '数学 ', 60 , '初二' union all
select 'X002' ,'中考' , '数学 ', 60 , '初二' union all
select 'X003' ,'中考' , '数学 ', 60 , '初二' insert into #bjgl
select 1 , '初一' union all
select 2 , '初二' select #xszl.xh,#xszl.xm,#kscj.ksm, #bjgl.bj,
max(case kmm when'语文' then kscj else 0 end) '语文',
MAX(case kmm when'数学' then kscj else 0 end) '数学'
from #xszl
INNER join #bjgl on #xszl.bjid=#bjgl.id
INNER join #kscj on #xszl.xh=#kscj.xh
group by #xszl.xh,#xszl.xm,#kscj.ksm, #bjgl.bj
drop table #xszl
drop table #kscj
drop table #bjgl