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 附近有语法错误
请各位帮看一下哪里错了?想知道为什么错了不想一味的寻求答案!

解决方案 »

  1.   

    将EXEC改为PRINT.然后自己看看输出的内容..
      

  2.   

    谢谢两位,我正找不到可以查看@SQL的函数,谢谢两位(本人菜鸟)
    尽量自己搞定它!不信了
      

  3.   

    搞错了,搞错了我把WHEN 写成了WHERE 了我晕
      

  4.   

    create table #xszl
    (
    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