| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 586 人关注过本帖
标题:用命令把多条记录合并成一条记录
只看楼主 加入收藏
多多妈
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-11-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
用命令把多条记录合并成一条记录
ksh       xm     kcdm  kcmc  dj
123456   张三    01    政治  D
123456   张三    02    语文  D
123456   张三    03    数学  D
123456   张三    04    英语  D

都是字符型

转换成
ksh     xm    政治   语文     数学    英语
123456  张三   D      D        D       D


还都是字符型

用命令
请高手指点,谢谢
搜索更多相关主题的帖子: 英语 记录 数学 语文 
2014-11-21 09:10
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9809
专家分:26987
注 册:2012-2-5
收藏
得分:4 
回复 楼主 多多妈
上传个示例自己研究吧
成绩列转行.rar (56.88 KB)
收到的鲜花
  • tlliqi2014-11-21 10:44 送鲜花  30朵  

坚守VFP最后的阵地
2014-11-21 10:11
多多妈
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-11-21
收藏
得分:0 
回复 2 楼 sdta
非常感谢,虽然不是命令是个小程序,也是非常感谢。
2014-11-21 10:28
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:4 
*构造实例数据
CREATE CURSOR 表 (ksh c(10),xm c(10),kcdm c(2),kcmc c(10),dj c(1))
INSERT INTO 表(ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','01','政治','D')
INSERT INTO 表(ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','02','语文','D')
INSERT INTO 表(ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','03','数学','D')
INSERT INTO 表(ksh,xm,kcdm,kcmc,dj) VALUES ('123456','张三','04','英语','D')
*******

SELECT distinct kcdm,kcmc FROM 表 INTO CURSOR t2 ORDER BY kcdm
str1="select distinct ksh,xm,"
SELECT t2
SCAN
    str1=str1+"'  ' "+ALLTRIM(kcmc)+","
ENDSCAN
str1=LEFT(str1,LEN(str1)-1)+" from 表 into cursor t1 READWRITE order by ksh"
EXECSCRIPT(str1)
SELECT t2
SCAN
    str2="UPDATE t1 SET "+ALLTRIM(kcmc)+"=b.dj from 表 b WHERE ALLTRIM(t1.ksh)==ALLTRIM(b.ksh) AND ALLTRIM(b.kcmc)=='"+ALLTRIM(kcmc)+"'"
    EXECSCRIPT(str2)
ENDSCAN
USE IN t2

SELECT t1
BROWSE
收到的鲜花
  • tlliqi2014-11-21 10:44 送鲜花  30朵  
2014-11-21 10:39
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
例子都8错
2014-11-21 10:44
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:4 
楼主,你这个案例不能用一条命令解决呀,是得用程序了。因为你涉及到把字段内容转换成字段名的问题了。
2014-11-21 10:51
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9809
专家分:26987
注 册:2012-2-5
收藏
得分:0 
程序代码:
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 

坚守VFP最后的阵地
2014-11-21 11:47
playyang123
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:70
专家分:332
注 册:2014-11-17
收藏
得分:4 
全链接  inner in
2014-11-21 11:58
playyang123
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:70
专家分:332
注 册:2014-11-17
收藏
得分:0 
把两张表关联起来
2014-11-21 11:58
快速回复:用命令把多条记录合并成一条记录
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017984 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved