一个表有很多字段,name1,name2,name3.....name n
查每行记录的最大值对于的字段名,EXCEL 的函数,不会用,数组不熟悉。
请朋友帮忙,谢谢。
num1 name1 name2 name3 。。。。name n
c1 1 2 3
c2 3 1 2
c3 1 3 2
查询转换变成:
num1 maxname
c1 name3
c2 name1
c3 name2
------解决方案--------------------------------------------------------
Create Cursor tableb(num1 c(2), maxname c(20))
Create Cursor tablea(num1 c(2),name1 i,name2 i,name3 i)
Insert Into tablea Values('c1',1,2,3)
Insert Into tablea Values('c2',3,2,1)
Insert Into tablea Values('c3',1,3,2)
Select tablea
Go Top
nFldcnt=Afield(tbarr)
Scan
Scatter Memvar
aa=FIELD(2)
m.maxname=FIELD(2)
m.maxvalue=&aa
For i = 3 To nFldcnt
aa=Field(i)
aavalue=&aa
If aavalue>m.maxvalue
m.maxname=aa
m.maxvalue=aavalue
Endif
Endfor
Insert Into tableb From Memvar
SELECT tablea
ENDSCAN
SELECT tableb
BROWSE
------解决方案--------------------------------------------------------
[code=SQL][/code]CREATE CURSOR TABLEB (NUM1 C(2),NUM2 C(10))
CREATE CURSOR TABLEA (NUM1 C(2),NAME1 I,NAME2 I,NAME3 I,NUM2 C(10))
INSERT INTO TABLEA VALUES('C1',1,2,3,"")
INSERT INTO TABLEA VALUES('C2',3,2,1,"")
INSERT INTO TABLEA VALUES('C3',1,3,2,"")
SELECT TABLEA
GO TOP
SCAN
SCATTER FIELDS LIKE NAME* TO ANAME
=ACOPY(ANAME,ANAMEE) &&复制数组
=ASORT(ANAMEE) && 数组排序
FOR I=1 TO ALEN(ANAME)
IF I=ALEN(ANAME)
INSERT INTO TABLEB VALUES (TABLEA.NUM1,"NAME"+TRANSFORM(ASCAN(ANAME,ANAMEE(ALEN(ANAME)))))
ENDIF
ENDFOR
SELECT TABLEA
ENDSCAN
SELECT TABLEB
BROWSE
------解决方案--------------------------------------------------------
楼上的都写的很精彩,我给个思路:
1、取出字段,(用循环的方法)
2、复制一个表结构到另一个表aa,并添加一条空记录
3、用循环字段的办法,逐一计算出最大值,并入表aa的对应字段中!