现有一表内容如下
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.   

    这个要动态创建表了...
    当然不是一句SQL可以完成的....1.先取得所有科目,生成表
    2.每个人每一科的成绩放到新生成的表不过, 这明显是数据库设计有问题的....
    应该设计一个科目表
    每次在科目表中增加一个科目,就在统计表中增加一个字段
      

  2.   

    不知道有没有现成的SQL
    建议你最好编程实现。
      

  3.   

    var
      myDataSet:TClientDataSet;
    begin
      //先建一個臨時DataSet
      myDataSet := TClientDataSet.Create(application);
      myDataSet.FieldDefs.Add('学号',ftstring,10);
      myDataSet.FieldDefs.add('姓名',ftstring,50);
      myDataSet.FieldDefs.add('语文',ftinteger);
      myDataSet.FieldDefs.add('数学',ftinteger);
      {...}
      myDataSet.CreateDataSet;
      //循環现有的表内容、装入臨時DataSet
      myDataSet.Append;
      myDataSet.FieldByName('学号'').AsString := edit1.Text;
      myDataSet.FieldByName(姓名').AsInteger := StrToInt(edit2.Text);
      {...}
      myDataSet.Post;  DataSource1.DataSet := myDataSet;
    end;
      

  4.   

    1、nyf1220(我是党员--不过听说最近风声紧,打算换名字) 能说的详细点吗?
    2、 ailibuli(愛理不理) 如果字段是不确定的,也就是说我不知道到底有多少门课程怎么办?
      

  5.   

    我也遇到过类似的问题,一般都是在客户端处理
    用存储过程生成临时表也可以3.建立自己的函数,传如学好和课程两个参数,输出成绩,函数可以直接使用到SQL语句中
      

  6.   

    1,access不支持临时表2,如果你的数据量比较大建议你把数据导入sql ,在其中实现你想要的表结构转化,再导回access中