回 帖 发 新 帖 刷新版面

主题:表的格式转换

如何实现以下两表的转换
表一:
人名  科目名称   成绩  
A        123       90
A        122       80
B        111       70
C        111       100
C        123       60
表二:
人名  科目名称1 科目1成绩  科目名称2 科目2成绩
A      123        90          122        80
B      111        70  
C      111        100         123        60
表一到表二,表二到表一,请问代码如何实现。

回复列表 (共5个回复)

沙发

123又在科目名称1里同时有在科目名称2里啊?

板凳


事实上《科目名称2》的可理解成《科目2》,该字段的内容可以使数学,语文,化学等。
如某学生考了数学和语文,那么科目名称1为数学,科目名称2语文。
如某学生考了语文和化学,那么科目名称1为语文,科目名称2化学。

3 楼

为何不把数学,语文,化学等直接设置成表二的字段名呢?按照楼主的设计,表二的数据岂不是显得很乱吗?也不便于统计和筛选。

4 楼


[size=5][size=4]我是这样考虑的:
我的科目名称较多(30种以上),而每个人只可能考2-6种,所以我不把每个考试名称单独列一个字段,而是笼统的科目名称1....科目名称6。[/size][/size]

5 楼

*表2的结构 "人名、科目1、成绩1、科目2、成绩2、科目3、成绩3...."
CLOSE TABLES
USE 表2 IN 2
USE 表1 IN 1
SELECT 表1
INDEX on 人名 TO rmsy
GO TOP
rm=人名
INSERT INTO 表2(人名) VALUES (rm)
I=1
DO WHILE !EOF()
  IF 人名=rm
    zd1="科目"+ALLTRIM(STR(I))
    sj1=科目名称
    zd2="成绩"+ALLTRIM(STR(I))
    sj2=成绩
    REPLACE &zd1 WITH sj1,&zd2 WITH sj2 IN 表2
    I=I+1
    SKIP
  ELSE
    rm=人名
    INSERT INTO 表2(人名) VALUES (rm)
    I=1
  ENDIF
ENDDO

我来回复

您尚未登录,请登录后再回复。点此登录或注册