| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:如何将同一姓名地址的某一字段内容放到一起
只看楼主 加入收藏
lasanding
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2011-11-3
结帖率:87.5%
收藏
已结贴  问题点数:9 回复次数:6 
如何将同一姓名地址的某一字段内容放到一起
如:xm           dz            bz
     a            ssdd         aa
     a            ssdd         bb
     a            ssdd         cc
     b            ssdd         b1
     b            ssdd         a1
整理成:
    xm           dz          bz
    a            ssdd       aa,bb,cc
    b            ssdd        b1,a1
该如何写程序啊?
搜索更多相关主题的帖子: 如何 
2012-11-14 10:01
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:3 
假设楼主的数据表是oky.dbf:
SELECT distinc xm,SPACE(27) dz,SPACE(17) bz FROM c:\oky INTO cursor temp READWRITE
SELECT oky
FOR i=1 TO RECCOUNT()
  GO i
  UPDATE temp SET bz=ALLTRIM(bz)+IIF(EMPTY(bz),"",',')+oky.bz,dz=oky.dz,xm=oky.xm WHERE temp.xm=oky.xm
NEXT
SELECT temp
BROWSE

 

[ 本帖最后由 qjbzjp 于 2012-11-14 10:59 编辑 ]
收到的鲜花
  • 月沐庭轩2012-11-14 20:10 送鲜花  10朵   附言:我很赞同

相互学习,互相交流,共同提高。
2012-11-14 10:53
lasanding
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2011-11-3
收藏
得分:0 
xm,SPACE(27) dz,SPACE(17)这是什么意思,不懂
2012-11-14 11:37
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
xm是指姓名字段
space(27)是指增加一个空字段,字符型,长度为27

我是来向高手学习的!
2012-11-14 12:22
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
以下是引用lasanding在2012-11-14 11:37:36的发言:

 xm,SPACE(27) dz,SPACE(17)这是什么意思,不懂
xm,SPACE(27) as dz && 生成一个长度为27个空格,名为dz的字段,这里的 as 可以省略。

相互学习,互相交流,共同提高。
2012-11-14 12:25
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:3 
程序代码:
CLOSE ALL
SET SAFETY OFF

CREATE TABLE T2 FREE ;
   (Xm C(1), Dz C(4), BZ C(20))

SELECT 0
USE T1
INDEX ON Xm+Dz TAG XmDz
GO TOP
SCAN
   参照关键字=T1.Xm+T1.Dz
   IF RECCOUNT("T2")=0
      INSERT INTO T2 VALUES (T1.Xm, T1.Dz, T1.Bz-",")
   ELSE
      IF T2.Xm+T2.Dz=参照关键字
         GO BOTTOM IN T2
         REPLACE T2.Bz WITH T2.Bz-T1.Bz-","
      ELSE
         SELECT T2
         GO BOTTOM
         REPLACE T2.Bz WITH LEFTC(T2.Bz,LENC(ALLTRIM(T2.Bz))-1)
         INSERT INTO T2 VALUES (T1.Xm, T1.Dz, T1.Bz-",")
         SELECT T1
      ENDIF
   ENDIF
ENDSCAN

SELECT T2
GO BOTTOM
REPLACE T2.Bz WITH LEFTC(T2.Bz,LENC(ALLTRIM(T2.Bz))-1)

SET SAFETY ON
CLOSE ALL
RETURN 

此程序段可以在不确定重复记录数,且重复记录没有排过序的情况下通用。

图片附件: 游客没有浏览图片的权限,请 登录注册



[ 本帖最后由 taifu945 于 2012-11-14 12:48 编辑 ]
收到的鲜花
2012-11-14 12:44
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:3 
以下是引用qjbzjp在2012-11-14 10:53:07的发言:

假设楼主的数据表是oky.dbf:
SELECT distinc xm,SPACE(27) dz,SPACE(17) bz FROM c:\oky INTO cursor temp READWRITE
SELECT oky
FOR i=1 TO RECCOUNT()
  GO i
  UPDATE temp SET bz=ALLTRIM(bz)+IIF(EMPTY(bz),"",',')+oky.bz,dz=oky.dz,xm=oky.xm WHERE temp.xm=oky.xm
NEXT
SELECT temp
BROWSE

 
上面代码可改为
程序代码:
SELECT DISTINCT XM,DZ,SPACE(20) BZ FROM OKY INTO CURSOR TEMP READWRITE
SELECT OKY
SCAN
    UPDATE TEMP SET BZ=ALLTRIM(BZ)+IIF(EMPTY(BZ),[],[,])+OKY.BZ WHERE TEMP.XM==OKY.XM AND TEMP.DZ==OKY.DZ
ENDSCAN
SELECT TEMP
BROWSE


[ 本帖最后由 bccn201203 于 2012-11-14 13:15 编辑 ]
收到的鲜花
2012-11-14 13:13
快速回复:如何将同一姓名地址的某一字段内容放到一起
数据加载中...
 
   



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

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