现有一表内容如下
xh       xm    kc     cj
0001     小明  语文    66
0001     小明  数学    85
0001     小明  英文    100
0002     里司  语文    55
0002     里司  数学    100
0002     里司  英文    80
……     ……  …………怎样把该表转化为如下格式:学号     姓名  语文  数学  英文
0001     小明  66    85   100
0002     里司  55    100  80
……     ……  …………转化时还需注意,上面只是列举了3门成绩
如果事前不能确定该表有几门成绩该如何转化?

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql = 'select xh,xm'
    select @sql = @sql + ',sum(case kc when '''+kc+''' then cj end) ['+kc+']'
     from (select distinct kc from test) as a
    select @sql = @sql+' from test group by xm'
    exec(@sql)
      

  2.   

    luke5678(奇异)你能说的详细点吗?
    我用的是ado+access
      

  3.   

    Create table test (name char(10),km char(10),cj 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 name'
    select @sql = @sql + ',max(case km when '''+km+''' then cj end )['+km+']'
    from (select distinct km from test) as a
    select @sql = @sql+' from test group by name'
    print(@sql)
    exec(@sql)
      

  4.   

    //不好意识,有个小小错误~~--测试Create table test (xh char(10),xm char(10),kc char(10),cj int)
    go
    insert test values('0001','小明','语文',66)
    insert test values('0001','小明','数学',85)
    insert test values('0001','小明','英语',100)
    insert test values('0002','李四','语文',55)
    insert test values('0002','李四','数学',100)
    insert test values('0002','李四','英语',80)-----------------------------------------------------------------declare @sql varchar(8000)
    set @sql = 'select xh,xm'
    select @sql = @sql + ',sum(case kc when '''+kc+''' then cj end) ['+kc+']'
     from (select distinct kc from test) as a
    select @sql = @sql+' from test group by xh,xm order by xh'
    exec(@sql)------------------------------------------------------------------结果xh                 xm               数学      英语     语文
    0001       小明       85 100 66
    0002       李四       100 80 55
      

  5.   

    倒!!!!!机子上没装access
    一会帮你去试试
      

  6.   

    你写的sql语句可以在adoquery中运行吗?