假设有张学生成绩表(Stu)如下
Name  Subject Result
张三  语文  80
张三  数学  90
张三  物理  85
李四  语文  85
李四  数学  92
李四  物理  82想变成 
姓名 语文 数学 物理
张三 80  90  85
李四 85  92  82如何写查询语句,在线等待高手的回复!

解决方案 »

  1.   

    使用游标,能这样写吗?
    SqlConnection MyCon = new SqlConnection(ConfigurationSettings.AppSettings["con"]);
    SqlCommand MyCmd = new SqlCommand(MySqlStr,MyCon);
        
    MyCon.Open();
    try
    {
    SqlDataReader MyReader;
    MyReader=MyCmd.ExecuteReader();
    if(MyReader.Read())如果可以使用游标,该如何写上面的MySqlStr语句呀?
      

  2.   

    三条SQL拼起来,group by 语文 数学 物理
      

  3.   

    DECLARE @DATA TABLE(NAME VARCHAR(10), Subject VARCHAR(10), Result INT)INSERT INTO @DATA VALUES ('张三', '语文', '80')
    INSERT INTO @DATA VALUES ('张三', '数学', '90')
    INSERT INTO @DATA VALUES ('张三', '物理', '85')
    INSERT INTO @DATA VALUES ('李四', '语文', '85')
    INSERT INTO @DATA VALUES ('李四', '数学', '92')
    INSERT INTO @DATA VALUES ('李四', '物理', '82')SELECT YW.NAME, YW.Result AS YW, SX.Result AS SX, WL.Result AS WL FROM
    (SELECT * FROM @DATA WHERE Subject = '语文') AS YW 
    INNER JOIN 
    (SELECT * FROM @DATA WHERE Subject = '数学') AS SX
    INNER JOIN 
    (SELECT * FROM @DATA WHERE Subject = '物理') AS WL 
    ON SX.NAME = WL.NAME 
    ON YW.NAME = SX.NAME/*
    RESULT:
    张三 80 90 85
    李四 85 92 82
    */
      

  4.   

    select distinct Name,
      语文=max((case   Subject   when   '语文'   then   Result   else   ''   end)),   
      数学=max((case   Subject   when   '数学'   then   Result   else   ''   end)),   
      物理=max((case   Subject   when   '物理'   then   Result   else   ''   end)),   
      from   Stu   
      group   by   Name
      

  5.   

    多了个豆号
    select distinct Name,
      语文=max((case   Subject   when   '语文'   then   Result   else   ''   end)),   
      数学=max((case   Subject   when   '数学'   then   Result   else   ''   end)),   
      物理=max((case   Subject   when   '物理'   then   Result   else   ''   end))  
      from   Stu   
      group   by   Name
      

  6.   

    select Stu.name 姓名,
    (select result from s where stu.Name  = s.Name and Subject = '语文' )  语文,
    select result from s where stu.Name  = s.Name and Subject = '数学' ) 数学 ,
    (select result from swhere stu.Name  = s.Name and Subject = '物理') 物理 
    from stu  s
    group By 姓名那个S 相当与你模拟出另一个stu表,两个表你做出这个查询就容易了,思路是这样的。
    这个应该可以,我现在在外面,这个我写过,好象是这么写的,要是你不清楚你给我发个邮件吧,我明天去公司看一下,我放在那机器里面了 ,中午给你回个邮件,[email protected]
      

  7.   

    在sql2005中有个反转的方法,你可以查一下