三個表:
userScore(學生成績):userno(號數),objectno(科目),score(成績)
uobject(科目表):objectno(科目號),objectname(科目名)
users(學生資料表):userno(學號),username(姓名)....要的結果:學號  科目1  科目2  科目3
 1     30       50   60    (成績)
 2     55       66   88
...
...急啊!help!!

解决方案 »

  1.   

    用一个Query作主表..双击后右键添加字段..2个Query连从表..于主Query关连..
    然后主Query里Select * from 表  就行了..
    用不着写那么长的SQL语句..
      

  2.   

    select userno,
      sum(case objectname when 科目1 then score else 0 end) as 科目1,
      sum(case objectname when 科目2 then score else 0 end) as 科目2,
      sum(case objectname when 科目3 then score else 0 end) as 科目3,
     
    from
    (
    select a.userno,c.objectname,b.score
    from users a
    join 
    userScore b
    on a.userno=b.userno
    join
    uobject c
    on b.objectno=c.objectno
    )t
    group by userid
      

  3.   

    我以前回复过类似的问题,你可以去看看,我不想再写一遍,如果还有问题,你可以在下面发贴。 
    http://community.csdn.net/Expert/topic/3496/3496151.xml?temp=.537533
      

  4.   


    Create table test (userno char(10),objectno char(10),score int)
    go
    insert test values('张三','语文',80)
    insert test values('张三','数学',86)
    insert test values('张三','英语',75)
    insert test values('李四','语文',78)
    insert test values('李四','数学',85)
    insert test values('李四','英语',78)
    select * from test
    declare @sql varchar(8000)
    set @sql = 'select userno'
    select @sql = @sql + ',max(case objectno when '''+objectno+''' then score end )['+objectno+']'
    from (select distinct objectno from test) as a
    select @sql = @sql+' from test group by userno'
    print(@sql)
    exec(@sql)
      

  5.   

    create table 表1 
    (號數 char(10), 
     成績 integer, 
     科目 char(10) 

    insert into 表1 
    select '1',60,'数学' 
    union 
    select '1',43,'物理' 
    union 
    select '1',100,'语文' 
    union 
    select '2',87,'语文' 
    union 
    select '2',99,'数学' 
    union 
    select '2',89,'物理' 
    union 
    select '2',87,'语文' 
    go select * from 表1DECLARE @SQL VARCHAR(8000) 
    SET @SQL='SELECT 號數' 
    SELECT @SQL= @SQL+ ',max(CASE WHEN 科目 = ''' + 科目 + ''' THEN 成績 else 0 END) [' + 科目 + ']' FROM (SELECT DISTINCT 科目 FROM 表1) A 
    SET @SQL=@SQL+ ' FROM 表1 GROUP BY 號數' 
    EXEC (@SQL) drop table 表1