前两天有一同事给我发一消息,请我帮忙按下图处理一下数据
原始数据
具体需求
大致看了一下,应该就是行数据转列数据,但又稍有不同,前面的数据类似于EXCEL表格中的冻结列。如何实现呢?只需要取后面6个字段中的数据进行转换,如果不为空,则进行转换。
首先对原如表格数据进行处理,转换成DBF表
表结构
表数据

转换的具体代码如下:

CLOSE ALL
CLEAR 
SET TALK OFF
SET SAFETY OFF
CREATE TABLE fenxi (riqi c(12),qinshi c(5),shiyou c(254),bjh c(2),bzr c(8),wjr c(8))
USE
SELECT a
USE weiji ALIAS wj
SELECT b
USE fenxi ALIAS fx
SELECT wj
scan
    f1=wj.riqi
    f2=wj.qinshi
    f3=wj.shiyou
    f4=wj.bjh
    f5=wj.bzr
    FOR i=6 TO fcount()
        fname=FIELD(i)
        ff=&fname
        IF LEN(ALLTRIM(ff))>0
            INSERT INTO fx (riqi,qinshi,shiyou,bjh,bzr,wjr) VALUES (f1,f2,f3,f4,f5,ff)
        ENDIF
    ENDFOR 
ENDSCAN 

转换之后的结果如下图
转换结果

发表评论