首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

vf表行列互转的有关问题

2013-03-25 
vf表行列互转的问题转换成xm语文数学地理张三李二汪一马六的格式反过来如何转换呢?vf?sql??行列互转[解决

vf表行列互转的问题


转换成

xm  语文  数学  地理
张三
李二
汪一
马六


的格式


反过来如何转换呢?

vf?sql??行列互转
[解决办法]

CREATE CURSOR T1 (XM C(10),KM C(10),FS I)
INSERT INTO T1 VALUES ('张三','语文',60)
INSERT INTO T1 VALUES ('李二','语文',61)
INSERT INTO T1 VALUES ('汪一','数学',58)
INSERT INTO T1 VALUES ('马六','地理',91)
INSERT INTO T1 VALUES ('马六','数学',60)
INSERT INTO T1 VALUES ('李二','地理',30)
INSERT INTO T1 VALUES ('张三','数学',20)
INSERT INTO T1 VALUES ('张三','地理',39)
*-- 以上生成测试数据,这里假设你的原表名为 T1

*--- 行记录转换为列记录
SELECT KM INTO CURSOR TMP FROM T1 GROUP BY KM
SELECT TMP
LCSTR="SELECT XM"
SCAN
    LCSTR=LCSTR+",SUM(IIF(ALLTRIM(KM)=='"+ALLTRIM(KM)+"',FS,0)) AS "+ALLTRIM(KM)+;
     IIF(RECNO()<RECCOUNT(),[],[ FROM T1 GROUP BY XM INTO CURSOR T2])
ENDSCAN
MESSAGEBOX(LCSTR)
&LCSTR
BROWSE

*--- 列记录转换为行记录
SELECT T2
LCSTR=[]
FOR I=2 TO FCOUNT()
    LCSTR=LCSTR+'SELECT XM,FIELD('+TRANSFORM(I)+') AS KM,EVALUATE(FIELD('+TRANSFORM(I)+')) AS FS FROM T2 WHERE NOT EMPTY(EVALUATE(FIELD('+TRANSFORM(I)+')))'+;
    IIF(I>2,')',[])+IIF(I<FCOUNT(),' UNION (',' INTO CURSOR T3')
ENDFOR
=MESSAGEBOX(LCSTR)
&LCSTR
BROWSE

热点排行