标题:用查询,可以把行变成列吗?
只看楼主
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
结帖率:66.67%
已结贴  问题点数:10 回复次数:40 
用查询,可以把行变成列吗?

如图,课程不确定有几门
搜索更多相关主题的帖子: 查询 课程 
2017-08-25 11:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
可以,前提是要知道有几门课程,如果课程不固定,建议用VFP写代码,可以参考https://blog.bccn.net/sdta/16715

坚守VFP最后的阵地
2017-08-25 11:24
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 2楼 sdta
怎么把结果放在grid里
2017-08-25 11:26
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 2楼 sdta
天才
2017-08-25 11:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
基础知识靠自己学习

坚守VFP最后的阵地
2017-08-25 11:28
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 5楼 sdta
谢谢,在研究
想到一个问题,如果课程是课程表里的课程呢,也就是课程是确定的,用查询可以吗
2017-08-25 11:54
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
可以
用SQL命令写代码

坚守VFP最后的阵地
2017-08-25 11:59
wedsic
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2017-7-17
得分:0 
回复 7楼 sdta
假设,课程都来自课程表,但是具体到每个人可能课程比课程表里的少,比如有的人是数学、英语,有的人是英语、化学,这情况是用vfp命令还是用查询合适。
2017-08-25 12:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
create cursor cj (学号 c(4),课程 c(4),成绩 n(3))
insert into cj values ("2001","语文",86)
insert into cj values ("2002","语文",87)
insert into cj values ("2003","语文",88)
insert into cj values ("2001","数学",85)
insert into cj values ("2002","数学",84)
insert into cj values ("2003","数学",83)
insert into cj values ("2001","英语",89)
insert into cj values ("2002","英语",81)
insert into cj values ("2003","英语",80)
select 学号,sum(iif(alltrim(课程)=="语文",成绩,0)) 语文,;
sum(iif(alltrim(课程)=="数学",成绩,0)) 数学,;
sum(iif(alltrim(课程)=="英语",成绩,0)) 英语 from cj where alltrim(学号)=="2001"

坚守VFP最后的阵地
2017-08-25 12:06
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
课程不固定用VFP代码方便,可以以逸待劳,代码可以重复使用,不用修改
程序代码:
create cursor t2 (学号 c(4),姓名 c(8),课目 c(10),成绩 n(3))
insert into t2 values ("1001","张三","数学",102)
insert into t2 values ("1001","张三","语文",120)
insert into t2 values ("1002","李四","数学",119)
insert into t2 values ("1002","李四","语文",108)
insert into t2 values ("1003","王五","政治",101)
insert into t2 values ("1003","王五","历史",105) 
select distinct 课目 from t2 into array ajg

 
* 创建临时表结构及索引
lcstr=""
for lnI=1 to alen(ajg,1)
    lcstr=lcstr+iif(empty(lcstr),"",",")+alltrim(ajg[lnI,1])+" N(3)"
endfor
create cursor t4 (学号 c(4),姓名 c(8),&lcstr)
index on 学号+姓名 tag xhxm
* 结束 [color=#808080]*[/color]

 
* 数据处理
select t2
set relation to 学号+姓名 into "t4"
scan
    km=alltrim(t2.课目)
    if found("t4")
        replace (km) with t2.成绩 in "t4"
    else
        insert into t4 (学号,姓名,&km) values (t2.学号,t2.姓名,t2.成绩)
    endif
endscan
set relation to
select t4
set filter to alltrim(学号)=="1002" && 根据情况,这行代码可有可无
browse


[此贴子已经被作者于2017-8-25 12:18编辑过]


坚守VFP最后的阵地
2017-08-25 12:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480271-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.175715 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved