现有一表内容如下
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门成绩
如果事前不能确定该表有几门成绩该如何转化?
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门成绩
如果事前不能确定该表有几门成绩该如何转化?
解决方案 »
- 请教一下webbrowser控件的使用
- 多线程中 的dll调用messagebox引起 call an os failed
- Devexpressvcl安装
- dll编绎后有5M,用aspack压缩后只有1M,但在软件运行时还是占用了5M内存,请问有如何办法在运行时只占用1M内存
- ExcelWorkSheet 如何获得单元格格式?
- 连接ACCESS的问题
- 关于操作WORD的问题,没找到相关的贴子,请高手们出山.
- 应大家要求,再放分200!!!!
- 高分求救*****关于内存泄露问题*****
- 哪个有XP风格的图标库,很多网站都无法打开,急,能用立刻给分
- ado 连接access数据库问题
- 没有学过存储过程,请帮个忙,学习一下。
当然不是一句SQL可以完成的....1.先取得所有科目,生成表
2.每个人每一科的成绩放到新生成的表不过, 这明显是数据库设计有问题的....
应该设计一个科目表
每次在科目表中增加一个科目,就在统计表中增加一个字段
建议你最好编程实现。
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;
2、 ailibuli(愛理不理) 如果字段是不确定的,也就是说我不知道到底有多少门课程怎么办?
用存储过程生成临时表也可以3.建立自己的函数,传如学好和课程两个参数,输出成绩,函数可以直接使用到SQL语句中