表:
姓名    年级          语文
A        一            98
B        一            66
A        二            70
A        三            55
A        四            88
C        四            66  
要得到结果(如查询A):姓名  年级  语文  年级   语文  年级  语文   年级   语文    
                         
A    一    98    二    70    三   55   四    88
要如何实现了?    

解决方案 »

  1.   

    1.显示一条
    SELECT   c1.cat_id AS id1, c1.cat_name AS name1, c2.cat_id AS id2, c2.cat_name AS name2
    FROM      dbo.blog_Category AS c1 INNER JOIN
                    dbo.blog_Category AS c2 ON c2.cat_id = 9
    WHERE   (c1.cat_id = 8)
    2.显示全部
    则select * from xxx where 姓名='A'
      

  2.   

    交叉数据报表
    http://blog.csdn.net/yjswjm119/archive/2005/10/18/508215.aspx
      

  3.   

    create table tbTemp
    (姓名 char(2),年级 char(2),语文 int)
    insert into tbTemp
    select 'A','一',98 union all
    select 'B','一',66 union all
    select 'A','二',70 union all
    select 'A','三',55 union all
    select 'A','四',88 union all
    select 'C','四',66 
    goselect 姓名,年级='一',语文=isnull(max(case 年级 when '一' then 语文 end),0),
           年级='二',语文=isnull(max(case 年级 when '二' then 语文 end),0),
           年级='三',语文=isnull(max(case 年级 when '三' then 语文 end),0),
           年级='四',语文=isnull(max(case 年级 when '四' then 语文 end),0)
    from tbTemp
    group by 姓名
      

  4.   


    /*
    姓名   年级   语文          年级   语文          年级   语文          年级   语文          
    ---- ---- ----------- ---- ----------- ---- ----------- ---- ----------- 
    A    一    98          二    70          三    55          四    88
    B    一    66          二    0           三    0           四    0
    C    一    0           二    0           三    0           四    66(所影响的行数为 3 行)*/