有两个表A和B表A:考试结果表      准考证号     科目     成绩
    
        0001       语文      88
        0001       数学      77
        0001       英文      68
        0002       语文      74
        0002       数学      61
        0002       英文      60
表B:考生表(准考证号唯一)
 
      准考证号    姓名    成绩是否审核        0001      李红          0
        0002      刘刚          1我要查询的结果是:
 
      准考证号    姓名     语文    数学     英文    成绩是否审核
           
        0001      李红      88      77       68           0
        0002      刘刚      74      61       60           1
帮忙写出SQL语句
     

解决方案 »

  1.   

    没人re啊?我就友情回复一下 吧 select a.准考证号, a.姓名
    ,sum(case when b.科目='语文' then b.成绩 else 0 end) as 语文
    ,sum(case when b.科目='数学' then b.成绩 else 0 end) as 数学
    ,sum(case when b.科目='英文' then b.成绩 else 0 end) as 英文
    ,a.成绩是否审核
    from 考试结果表  b ,考生表 a 
    where a.准考证号= b.准考证号
    group by a.准考证号, a.姓名,a.成绩是否审核
      

  2.   

    select m.准考证号,
           n.姓名,
           max(case m.科目 when '语文' then m.成绩 else 0 end) 语文,
           max(case m.科目 when '数学' then m.成绩 else 0 end) 数学,
           max(case m.科目 when '英文' then m.成绩 else 0 end) 英文,
           n.成绩是否审核
    from 考试结果表 m, 考生表 n
    where m.准考证号 = n.准考证号
    group by m.准考证号,n.姓名,n.成绩是否审核
      

  3.   

    -- =============================================
    -- Author:      T.O.P
    -- Create date: 2009/11/28
    -- Version:     SQL SERVER 2005
    -- =============================================
    declare @TB1 table([准考证号] varchar(4),[科目] varchar(4),[成绩] int)
    insert @TB1
    select '0001','语文',88 union all
    select '0001','数学',77 union all
    select '0001','英文',68 union all
    select '0002','语文',74 union all
    select '0002','数学',61 union all
    select '0002','英文',60declare @TB2 table([准考证号] varchar(4),[姓名] varchar(4),[成绩是否审核] int)
    insert @TB2
    select '0001','李红',0 union all
    select '0002','刘刚',1SELECT A.[准考证号], A.[姓名],
    MAX(CASE WHEN [科目]='语文' THEN [成绩] ELSE 0 END) AS 语文,
    MAX(CASE WHEN [科目]='数学' THEN [成绩] ELSE 0 END) AS 数学,
    MAX(CASE WHEN [科目]='英文' THEN [成绩] ELSE 0 END) AS 英文
    ,A.[成绩是否审核]
    FROM @TB2 A INNER JOIN @TB1 B ON A.[准考证号] = B.[准考证号]
    GROUP BY A.[准考证号], A.[姓名],A.[成绩是否审核]
    --测试结果:
    /*
    准考证号 姓名   语文          数学          英文          成绩是否审核
    ---- ---- ----------- ----------- ----------- -----------
    0001 李红   88          77          68          0
    0002 刘刚   74          61          60          1(2 row(s) affected)
    */
      

  4.   

    楼上的
    'MAX' 附近有语法错误。关键字 'GROUP' 附近有语法错误。