用命令把多条记录合并成一条记录
ksh xm kcdm kcmc dj123456 张三 01 政治 D
123456 张三 02 语文 D
123456 张三 03 数学 D
123456 张三 04 英语 D
都是字符型
转换成
ksh xm 政治 语文 数学 英语
123456 张三 D D D D
还都是字符型
用命令
请高手指点,谢谢
程序代码:CREATE CURSOR Cjb (ksh c(10),xm c(10),kcdm c(2),kcmc c(10),dj c(1))
INSERT INTO Cjb (ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','01','政治','D')
INSERT INTO Cjb (ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','02','语文','D')
INSERT INTO Cjb (ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','03','数学','D')
INSERT INTO Cjb (ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','04','英语','D')
T1=Seconds()
Local cBh,cKm
cBh="Ksh"
cKm="Kcmc"
Select Distinct &cKm From Cjb Into Array Akm
List Memory LIKE Akm
cStru=cBh+" C(6)"
For lnI=1 To Alen(Akm,1)
cStru=cStru+Iif(Not Empty(cStru),",","")+Akm[lnI]+" C(1)"
EndFor
Create Cursor 列转行 (Xm C(10),&cStru)
Insert Into 列转行 (&cBh,Xm) Select Distinct &cBh,Xm From Cjb
For lnI=1 To Alen(Akm,1)
Update 列转行 Set &Akm[lnI]=A.Dj From Cjb A Where 列转行.&cBh==A.&cBh And Akm[lnI]==A.&cKm
EndFor
MessageBox("共运行:"+Transform(Seconds()-T1)+" 秒")
Browse
