求助关于视图查询的一个问题?谢谢各位大侠!
我想把一个数据图表的某一项不重复的数据变成横表查询,能做到吗?比如:(车型 车号 设备型号 设备编号) 4个字段,其中车型车号记录重复(因每种车型车号安装有5种型号设备)我想在查询时车型车号变成唯一记录,设备型号编号记录变成横表显示(其实就是领导看着习惯)。谢谢了
程序代码:CLOSE ALL
SET TALK OFF
SET SAFETY OFF
USE T1
COPY STRUCTURE TO T2
USE T2 IN 0
机车序号=1
型号=机车型号
编号=机车编号
名称=设备名称
SCAN
IF 机车型号+机车编号+设备名称=型号+编号+名称
IF RECCOUNT("T2")=0
INSERT INTO T2 VALUES (T1.机车型号,T1.机车编号,T1.设备名称,T1.设备型号, ;
T1.设备编号,T1.生产日期,T1.生产厂家)
ELSE
SKIP &&如果下一条记录的设备和前一条记录一样,就跳过
ENDIF
ELSE
IF 机车型号+机车编号#型号+编号
机车序号=1 &&如果换了机车,设备名称从头开始计数
INSERT INTO T2 (机车型号,机车编号,设备名称,设备型号, ;
设备编号,生产日期,生产厂家) ;
VALUES (T1.机车型号,T1.机车编号,T1.设备名称,T1.设备型号, ;
T1.设备编号,T1.生产日期,T1.生产厂家)
ELSE
机车序号=机车序号+1
重复字段序号=LTRIM(STR(机车序号,2))
设备名称字段="设备名称"+重复字段序号
设备型号字段="设备型号"+重复字段序号
设备编号字段="设备编号"+重复字段序号
生产日期字段="生产日期"+重复字段序号
生产厂家字段="生产厂家"+重复字段序号
IF LEN(FIELD(设备名称字段,"T2"))=0 &&不存在相应设备字段
ALTER TABLE T2 ADD (设备名称字段) C(20) ;
ADD (设备型号字段) C(4) ;
ADD (设备编号字段) C(5) ;
ADD (生产日期字段) D ;
ADD (生产厂家字段) C(4)
SELECT T2
REPLACE (设备名称字段) WITH T1.设备名称, ;
(设备型号字段) WITH T1.设备型号, ;
(设备编号字段) WITH T1.设备编号, ;
(生产日期字段) WITH T1.生产日期, ;
(生产厂家字段) WITH T1.生产厂家
ELSE &&如果已有相应设备字段
UPDATE T2 SET &设备名称字段=T1.设备名称, ;
&设备型号字段=T1.设备型号, ;
&设备编号字段=T1.设备编号, ;
&生产日期字段=T1.生产日期, ;
&生产厂家字段=T1.生产厂家 ;
WHERE T2.机车型号+T2.机车编号=T1.机车型号+T1.机车编号
ENDIF
ENDIF
ENDIF
SELECT T1
型号=机车型号
编号=机车编号
名称=设备名称
ENDSCAN
CLOSE ALL
SET TALK ON
SET SAFETY ON
RETURN程序有点长,你可以研究一下。匆忙中编出来,效果达到了,但没有考虑优化,只是按步骤做。T1.DBF是源数据表,生成的效果是T2.DBF。