| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10331 人关注过本帖, 1 人收藏
标题:纵向的数据横向显示出来
只看楼主 加入收藏
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
Set EngineBehavior 70
Close Databases
*!*    构造测试数据:
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)

*!*    方法一:定制型 SQL 语句:
Select 学号, 姓名, Sum(Iif(课目 = "数学", 成绩, 0)) As "数学", Sum(Iif(课目 = "语文", 成绩, 0)) As "语文" ;
    Order By 学号 Group By 学号, 姓名 From t2


*!*    方法二:通用性 SQL 语句:(可以是更多的、不确定的课目)
Select Distinct 课目 From t2 Into Array laClasses

lcSQL = "Select 学号, 姓名 "
For Each lcClass In laClasses
    lcSQL = lcSQL + ", " + "SUM( IIF(课目 = [" + lcClass + "], 成绩, 0) ) As " + lcClass
Endfor
m.lcSQL = m.lcSQL + " Order By 学号 Group By 学号, 姓名 From t2"
&lcSQL


*!*    方法三:交叉表 SQL 语句:
Do (_Genxtab) With 'xTab', .F., .F., .F. ,2, 3, 4  &&, .F., 0, .F.
Browse Last

今天累了,先做三个简单的,对付一下。
明天再做三个 Join 和子 Select 连接的 SQL 示例。

怎样?

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-17 23:59
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
以下是引用sdta在2016-3-17 21:49:17的发言:


SQL语句不是万能的,看看这个内容:https://blog.bccn.net/sdta/16715,对你是有帮助的


Set EngineBehavior 70
*!*    算法四:SQL Join 自连接语句:
Select T1.学号 As 学号, T1.姓名 As 姓名, T1.成绩 As 数学, T2.成绩 As 语文 ;
    From Force T2 T1 ;
    Left Join T2 T2 On T1.学号 = T2.学号 And T1.课目 <> T2.课目 ;
    Order By T1.学号 Group By T1.学号

1. 如果作为学院派的,讲究技巧,语言华丽,用词精简;
2. 如果作为实用派的,讲究速度,提高效率,不拘小节;
S 老师您的这篇大作是属于哪个流派的?好像都不沾边耶。
S 老师您的大作想给我们在校学生有什么帮助?什么启迪?
我们学生看不出来,请赐教,谢谢您。



民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-18 09:32
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
aaaaaa楼主:
*!*    方法二:通用性 SQL 语句:(可以是更多的、不确定的课目)
Select Distinct 课目 From t2 Into Array laClasses

lcSQL = "Select 学号, 姓名 "
For Each lcClass In laClasses
    lcSQL = lcSQL + ", " + "SUM( IIF(课目 = [" + lcClass + "], 成绩, 0) ) As " + lcClass
Endfor
m.lcSQL = m.lcSQL + " Order By 学号 Group By 学号, 姓名 From t2"&&&此句中=后面的m.lcsql前面的m表示什么?
&lcSQL    &&应是运行&m.lcsql,为什么是&lcsql?

2016-03-18 09:57
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用aaaaaa在2016-3-18 09:32:35的发言:

 
 
Set EngineBehavior 70
*!*    算法四:SQL Join 自连接语句:
Select T1.学号 As 学号, T1.姓名 As 姓名, T1.成绩 As 数学, T2.成绩 As 语文 ;
    From Force T2 T1 ;
    Left Join T2 T2 On T1.学号 = T2.学号 And T1.课目 <> T2.课目 ;
    Order By T1.学号 Group By T1.学号
 
1. 如果作为学院派的,讲究技巧,语言华丽,用词精简;
2. 如果作为实用派的,讲究速度,提高效率,不拘小节;
S 老师您的这篇大作是属于哪个流派的?好像都不沾边耶。
S 老师您的大作想给我们在校学生有什么帮助?什么启迪?
我们学生看不出来,请赐教,谢谢您。
 
 
如果课程每个人报的不一样,有的是1门,有的2门,有的是3或4,5门,这样自联接的语句如何写?
2016-03-18 10:00
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
m.lcSQL = lcSQL,没有区别,这是偷懒的写法,因为我是属于学院派和实用派的组合,所以有时候写的不规范,非常的抱歉。

如果有多门的、不确定的学科,方法二:通用性 SQL 语句应该可以做的,你试试看。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-18 13:55
快速回复:纵向的数据横向显示出来
数据加载中...
 
   



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

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