| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10296 人关注过本帖, 1 人收藏
标题:纵向的数据横向显示出来
只看楼主 加入收藏
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
*!*    示例 1 : 两个字符型字段的转置示例 :
Close Databases All

*!*    1. 建立测试数据 :
Create Cursor Test ( Id C(1), Class C(1) )
Insert Into Test ( Id, Class ) Values ( "1", "A" )
Insert Into Test ( Id, Class ) Values ( "1", "B" )
Insert Into Test ( Id, Class ) Values ( "1", "A" )
Insert Into Test ( Id, Class ) Values ( "1", "A" )
Insert Into Test ( Id, Class ) Values ( "1", "B" )
Insert Into Test ( Id, Class ) Values ( "1", "A" )
Insert Into Test ( Id, Class ) Values ( "2", "B" )
Insert Into Test ( Id, Class ) Values ( "2", "B" )
Insert Into Test ( Id, Class ) Values ( "2", "A" )
Insert Into Test ( Id, Class ) Values ( "2", "B" )
Insert Into Test ( Id, Class ) Values ( "2", "B" )
Insert Into Test ( Id, Class ) Values ( "2", "B" )

Select Distinct Class From Test Into Array laClasses

*!*    2. 构造一个通用的转置函数 :
m.lcSQL = "Select Test.ID "
For Each lcClass In laClasses
    m.lcSQL = m.lcSQL + "," + "SUM( IIF(test.Class = [" + lcClass+"], 1, 0) ) As " + lcClass
Endfor
m.lcSQL = m.lcSQL + " From TEST GROUP BY Test.ID"
&lcSQL

*!*    转置结果 :

*!*    id   A   B
*!*    ==========
*!*     1   4   2
*!*     2   1   5


*!*    示例 2 : 10个(or 20个)字段的转置示例 :
待续ing..........


*!*    示例 3 : VFP 可以做到而 SQL Server 的 PIVOT() 很难做到的转置示例 :
待续ing..........

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-04 15:13
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:0 
回复 13楼 aaaaaa
Do (_Genxtab) With 'xtab'
xtab是转置后的表名吗?求Genxtab的用法.
2016-03-04 21:35
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
xtab 是游标名。可以指定 DBF 或 DBC 格式。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-04 21:55
antony521
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:170
专家分:175
注 册:2009-8-20
收藏
得分:0 
回复 23楼 aaaaaa
是这样吗?
Do (_Genxtab) With 'xtab' into dbf 自由表名
帮助里没有

[此贴子已经被作者于2016-3-5 13:12编辑过]

2016-03-05 13:08
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
Genxtab Help 好像没有特意介绍的,但在 VFP 里有向导的,或者在 Genxtab.Prg/VFPxtab,Prg 里有说明的。
我试试看翻译一下 FastXTab.Prg 最新版的资料。

不知道行不行。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-06 15:36
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
1. vfpxtab.prg 用法:
有 10 个参数:
参数 : 1 : 输出的文件/游标名 (缺省值 : "xTab.dbf")
       2 : 指定为游标        (缺省值 : .F.)
       3 : 完成后关闭输入表  (缺省值 : .T.)
       4 : 显示进度条        (缺省值 : .T.)
       5 : 行字段            (缺省值 : 1)
       6 : 列字段            (缺省值 : 2)
       7 : 数据字段          (缺省值 : 3)
       8 : 聚合/汇总运算     (缺省值 : .F.)
       9 : 聚合/汇总运算选项 (0 = Sum, 1 = Count, 2 = %)
      10 : 显示 Null 值

示例:
Do (_Genxtab) With 'xTab', .T., .F., .T., 1, 4, 5, .T., 0, .F.

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-07 11:01
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我的库中有1230多条记录,为什么转换时出现
图片附件: 游客没有浏览图片的权限,请 登录注册
难道只有254条可转换吗?
2016-03-07 11:18
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
回复 27楼 sylknb
字段数限制?
2016-03-07 11:20
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
自由表、游标的字段限制数:254
交叉表的常量表:
#define    C_LOCATEDBF    "请定位输入的数据库:"
#define    C_OUTPUT    "输入和输出的数据库不能同名."
#define    C_NEED3FLDS    "交叉表输入的数据库必须至少有三个字段."
#define    C_EMPTYDBF    "在无记录的数据库中不能处理交叉表."
#define    C_BADPAGEFLD    "在输入时数据库中交叉表的页字段不可以是 Memo、General 或者是 Picture 字段."
#define    C_BADROWFLD    "在输入时数据库中交叉表的行字段不可以是 Memo、General 或者是 Picture 字段."
#define    C_BADCOLFLD    "在输入时数据库中交叉表的列字段不可以是 Memo、General 或者是 Picture 字段."
#define    C_BADCELLFLD    "在输入时数据库中交叉表的 cell 字段不可以是 Memo、General 或者是 Picture 字段."
#define    C_NOCOLS    "列值没有找到."
#define    C_XSVALUES    "列字段的数量过多,超过了最大容许值 254."
#define    C_UNKNOWNFLD    "未知的字段类型."

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-07 12:46
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用厨师王德榜在2016-3-2 09:21:10的发言:

以前帮别人做过一个通用的行列转换程序,把列的内容横向显示,大概情况是这样子:

界面是这样子:
能提供的源码?大家学习下
2016-03-08 12:53
快速回复:纵向的数据横向显示出来
数据加载中...
 
   



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

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