| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10294 人关注过本帖, 1 人收藏
标题:纵向的数据横向显示出来
只看楼主 加入收藏
cyl8273
Rank: 2
等 级:论坛游民
帖 子:11
专家分:20
注 册:2010-5-21
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:64 
纵向的数据横向显示出来
数据库中存储的数据如下 :
id  企业名称 车辆型号
 1 公司1  a1
 2 公司1  a2  
 3 公司1  a3  
 28 公司2  b1  
 29 公司2  b2  
 30 公司2  b3  
 31 公司2  b4  

在vfp上显示的内容为:
 1 公司1  a1  a2 a3
 2 公司2  b1  b2  b3  b4
数据库表中每个公司的车辆型号的数量是不相同的。如公司1的车型有30种,公司2的车型有40种。我现在就是想把每个公司的所有车型在公司后面横向显示出来。
不好意思,我没有说清楚。

数据如下:
create TABLE Table1 (Name varchar(50),Subject varchar(50))
INSERT INTO TABLE1 VALUES('A','a1')
INSERT INTO TABLE1 VALUES('A','a2')
INSERT INTO TABLE1 VALUES('A','a3')
INSERT INTO TABLE1 VALUES('A','a4')
INSERT INTO TABLE1 VALUES('A','a5')
INSERT INTO TABLE1 VALUES('A','a6')
INSERT INTO TABLE1 VALUES('A','a7')
INSERT INTO TABLE1 VALUES('B','b1')
INSERT INTO TABLE1 VALUES('B','b2')
INSERT INTO TABLE1 VALUES('B','b3')
INSERT INTO TABLE1 VALUES('B','b4')
INSERT INTO TABLE1 VALUES('B','b5')
INSERT INTO TABLE1 VALUES('B','b11')
INSERT INTO TABLE1 VALUES('B','b23')
INSERT INTO TABLE1 VALUES('B','b34')
INSERT INTO TABLE1 VALUES('B','b8')
INSERT INTO TABLE1 VALUES('B','b9')
INSERT INTO TABLE1 VALUES('B','b15')


[此贴子已经被作者于2016-3-1 16:44编辑过]

搜索更多相关主题的帖子: 型号 create 数据库表 
2016-03-01 16:35
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
如果只是显示的,好像这么做:

Clear
Close Databases
Create Table Table1 (Name Varchar(50), Subject Varchar(50))
Insert Into TABLE1 Values('A','a1')
Insert Into TABLE1 Values('A','a2')
Insert Into TABLE1 Values('A','a3')
Insert Into TABLE1 Values('A','a4')
Insert Into TABLE1 Values('A','a5')
Insert Into TABLE1 Values('A','a6')
Insert Into TABLE1 Values('A','a7')
Insert Into TABLE1 Values('B','b1')
Insert Into TABLE1 Values('B','b2')
Insert Into TABLE1 Values('B','b3')
Insert Into TABLE1 Values('B','b4')
Insert Into TABLE1 Values('B','b5')
Insert Into TABLE1 Values('B','b11')
Insert Into TABLE1 Values('B','b23')
Insert Into TABLE1 Values('B','b34')
Insert Into TABLE1 Values('B','b8')
Insert Into TABLE1 Values('B','b9')
Insert Into TABLE1 Values('B','b15')
Insert Into TABLE1 Values('C','c15')
Go Top
lcName = Alltrim(Table1.Name)
? lcName + Space(2)
Scan
    If lcName <> Alltrim(Table1.Name)
        ? Alltrim(Table1.Name) + Space(2)
    Endif
    ?? Alltrim(Subject) + Space(2)
    lcName = Alltrim(Table1.Name)
Endscan

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-01 17:06
cyl8273
Rank: 2
等 级:论坛游民
帖 子:11
专家分:20
注 册:2010-5-21
收藏
得分:0 
一般都需要数据库操作,或用sql语句,网上oracle和sql2000都有!想请大咖用vfp实现!谢谢!!


[此贴子已经被作者于2016-3-1 18:35编辑过]

2016-03-01 18:23
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
2楼的就是vfp中实现吧
2016-03-01 18:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:3 
上传完整的数据
收到的鲜花
  • ntxscwk2016-03-15 22:46 送鲜花  7朵   附言:好文章

坚守VFP最后的阵地
2016-03-01 19:08
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:3 
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
SELECT DISTINCT Name, SPACE(254) Subjects FROM TABLE1 INTO CURSOR tmp READWRITE 
SELECT tmp
INDEX on Name TAG Name
SELECT TABLE1
SET RELATION TO Name INTO "tmp"
REPLACE tmp.Subjects WITH tmp.Subjects - TABLE1.Subject - "," ALL 
SET RELATION TO
SELECT tmp
BROWSE
收到的鲜花
  • ntxscwk2016-03-15 22:47 送鲜花  7朵  
2016-03-01 19:59
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
还有什么未交代的限制条件?
比如:只容许一条 SQL 语句,必须转成 TXT 文件,必须支持 VFP 5,或者导入到 Oracle 数据库中。。。。。。

交代清楚了,大家再试试看。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-01 20:09
cyl8273
Rank: 2
等 级:论坛游民
帖 子:11
专家分:20
注 册:2010-5-21
收藏
得分:0 
ok,太好了!感谢!
2016-03-01 21:38
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:989
专家分:4966
注 册:2013-2-16
收藏
得分:3 
以前帮别人做过一个通用的行列转换程序,把列的内容横向显示,大概情况是这样子:
图片附件: 游客没有浏览图片的权限,请 登录注册

界面是这样子:
图片附件: 游客没有浏览图片的权限,请 登录注册


2016-03-02 09:21
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
9楼 的不完全是行列转置,应该属于交叉表 (Do (_Genxtab) With 'xTab')
交叉表必须至少有三个栏位 (字段),其中至少有一个可以参加聚合运算的栏位,一个栏位做栏位名。

而楼主的题意是行列转置问题,或者叫做数据库的压扁技术。

如果用一条 SQL 语句做,应该有难度。

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



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

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