| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 922 人关注过本帖, 1 人收藏
标题:请帮我看看这个排序问题
只看楼主 加入收藏
ffyy
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-12-11
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:14 
请帮我看看这个排序问题
Select  Kuaijpz.登证日期,Kuaijpz.类别+"-"+Substr(Dtos(Kuaijpz.登证日期),5,2)+Space(1)+Allt(Kuaijpz.凭证号) As 凭证号,;
    ALLTRIM(Kuaijpz.科目)+"-"+Account.科目名称 As 科目,;
    FROM XC!KUAIJPZ ;
    INNER Join XC!ACCOUNT On  Kuaijpz.科目 = Account.科目代码;
    ORDER  By 登证日期;
    INTO Cursor mypz

在表mypz中,每个日期字段会对应数行数据,我想按表Kuaijpz中登证日期排序,但不改变每个日期对应数据的物理顺序。我用上面的语句,结果是在每个日期对应的数据行中,却自动按表Account中的 科目代码 字段排序了。怎么才能让查询结果不按Account中的 科目代码 字段排序呢?
搜索更多相关主题的帖子: 数据 
2012-03-17 12:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:10 
以下是引用ffyy在2012-3-17 12:33:16的发言:

Select  Kuaijpz.登证日期,Kuaijpz.类别+"-"+Substr(Dtos(Kuaijpz.登证日期),5,2)+Space(1)+Allt(Kuaijpz.凭证号) As 凭证号,;
    ALLTRIM(Kuaijpz.科目)+"-"+Account.科目名称 As 科目,;
    FROM XC!KUAIJPZ ;
    INNER Join XC!ACCOUNT On  Kuaijpz.科目 = Account.科目代码;
    ORDER  By 登证日期;
    INTO Cursor mypz

在表mypz中,每个日期字段会对应数行数据,我想按表Kuaijpz中登证日期排序,但不改变每个日期对应数据的物理顺序。我用上面的语句,结果是在每个日期对应的数据行中,却自动按表Account中的 科目代码 字段排序了。怎么才能让查询结果不按Account中的 科目代码 字段排序呢?
FROM XC!KUAIJPZ &&是否缺少表Account
ORDER  By 登证日期 &&是否ORDER  By Kuaijpz.登证日期
Kuaijpz.登证日期 &&数据类型?

坚守VFP最后的阵地
2012-03-17 13:07
ffyy
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-12-11
收藏
得分:0 
以下是引用sdta在2012-3-17 13:07:32的发言:

FROM XC!KUAIJPZ &&是否缺少表Account
ORDER  By 登证日期 &&是否ORDER  By Kuaijpz.登证日期
Kuaijpz.登证日期 &&数据类型?
FROM XC!KUAIJPZ &&是否缺少表Account
---两个表的关系是  FROM XC!KUAIJPZ   INNER Join XC!ACCOUNT On  Kuaijpz.科目 = Account.科目代码
ORDER  By 登证日期 &&是否ORDER  By Kuaijpz.登证日期
---加上Kuaijpz.后,结果不变。

Kuaijpz.登证日期的数据类型是日期型。以之排序结果正常,只是同一个日期里的各行数据,却在引入表Account
之后,在这一组里,数据按表Account里的 科目代码 字段排序了。而我不需要这种排序。不知如何使每个日期里对应的这组数据的顺序保持不变呢?
 
2012-03-17 13:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
回复 3楼 ffyy
连接方式对数据顺序是否有影响。
用WHERE 试试
能否传上表
Select  Kuaijpz.登证日期,Kuaijpz.类别+"-"+Transform(Month(Kuaijpz.登证日期))+Space(1)+Allt(Kuaijpz.凭证号) As 凭证号,;
    ALLTRIM(Kuaijpz.科目)+"-"+Account.科目名称 As 科目,;
    FROM XC!KUAIJPZ,ACCOUNT WHERE Kuaijpz.科目 = Account.科目代码;
    ORDER  By 登证日期;
    INTO Cursor mypz


[ 本帖最后由 sdta 于 2012-3-17 13:32 编辑 ]

坚守VFP最后的阵地
2012-03-17 13:18
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:10 
以下是引用ffyy在2012-3-17 12:33:16的发言:

Select  Kuaijpz.登证日期,Kuaijpz.类别+"-"+Substr(Dtos(Kuaijpz.登证日期),5,2)+Space(1)+Allt(Kuaijpz.凭证号) As 凭证号,;
    ALLTRIM(Kuaijpz.科目)+"-"+Account.科目名称 As 科目,;
    FROM XC!KUAIJPZ ;
    INNER Join XC!ACCOUNT On  Kuaijpz.科目 = Account.科目代码;
    ORDER  By 登证日期;
    INTO Cursor mypz

在表mypz中,每个日期字段会对应数行数据,我想按表Kuaijpz中登证日期排序,但不改变每个日期对应数据的物理顺序。我用上面的语句,结果是在每个日期对应的数据行中,却自动按表Account中的 科目代码 字段排序了。怎么才能让查询结果不按Account中的 科目代码 字段排序呢?


9.0版:

Select k1.登证日期,k1.类别+"-"+Substr(Dtos(k1.登证日期),5,2)+" "+Allt(k1.凭证号) As 凭证号,;
    ALLTRIM(k1.科目)+"-"+k2.科目名称 As 科目,;
    FROM XC!ACCOUNT k2;
    INNER Join XC!KUAIJPZ k1 On  k1.科目 = k2.科目代码;
    ORDER  By k1.登证日期;
    INTO Cursor mypz
2012-03-17 14:07
ffyy
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2011-12-11
收藏
得分:0 
简单举例说明问题,比如两个表中一组数据:
 登证日期    凭证号    科目代码       account.科目名称
2012-03-16    0001       220202           BUT
2012-03-16    0001       1002            存款
2012-03-16    0001       220205          拆箱费
2012-03-16    0001       1001            现金
分组排序后,我想要的是上述顺序,这也是输入数据时的物理顺序。
但是执行查询后,结果会变成:
2012-03-16    0001       1001            现金
2012-03-16    0001       1002            存款
2012-03-16    0001       220202           BUT
2012-03-16    0001       220205          拆箱费
不仅分组、按时间排序,而且还按科目代码排序了!

试验了茵梦湖 的方法,还是不行啊

2012-03-17 14:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
以下是引用ffyy在2012-3-17 14:34:53的发言:

简单举例说明问题,比如两个表中一组数据:
 登证日期    凭证号    科目代码       account.科目名称
2012-03-16    0001       220202           BUT
2012-03-16    0001       1002            存款
2012-03-16    0001       220205          拆箱费
2012-03-16    0001       1001            现金
分组排序后,我想要的是上述顺序,这也是输入数据时的物理顺序。
但是执行查询后,结果会变成:
2012-03-16    0001       1001            现金
2012-03-16    0001       1002            存款
2012-03-16    0001       220202           BUT
2012-03-16    0001       220205          拆箱费
不仅分组、按时间排序,而且还按科目代码排序了!

试验了茵梦湖 的方法,还是不行啊
220202
1002
220205
1001
是KUAIJPZH的原始顺序?

坚守VFP最后的阵地
2012-03-17 14:46
茵梦湖
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
注 册:2009-4-25
收藏
得分:0 
以下是引用ffyy在2012-3-17 14:34:53的发言:

简单举例说明问题,比如两个表中一组数据:
 登证日期    凭证号    科目代码       account.科目名称
2012-03-16    0001       220202           BUT
2012-03-16    0001       1002            存款
2012-03-16    0001       220205          拆箱费
2012-03-16    0001       1001            现金
分组排序后,我想要的是上述顺序,这也是输入数据时的物理顺序。
但是执行查询后,结果会变成:
2012-03-16    0001       1001            现金
2012-03-16    0001       1002            存款
2012-03-16    0001       220202           BUT
2012-03-16    0001       220205          拆箱费
不仅分组、按时间排序,而且还按科目代码排序了!

试验了茵梦湖 的方法,还是不行啊


我不知道 你是怎么试验的~~ 最后再回1贴, 不会再回贴~

测试代码如下:


crea curs Kuaijpz (登证日期 d,类别 c(2),凭证号 c(4),科目 c(6))
   inse into Kuaijpz valu(ctod("2012-03-16"),"","0001","220202")
   inse into Kuaijpz valu(ctod("2012-03-16"),"","0001","1002")
   inse into Kuaijpz valu(ctod("2012-03-16"),"","0001","220205")
   inse into Kuaijpz valu(ctod("2012-03-16"),"","0001","1001")
brow
crea curs ACCOUNT( 科目代码 c(6),科目名称 c(10))
   inse into ACCOUNT valu("1001","现金")
   inse into ACCOUNT valu("1002","存款")
   inse into ACCOUNT valu("220202","BUT")
   inse into ACCOUNT valu("220205","拆箱费")
brow
*
Select k1.登证日期,k1.类别+"-"+Substr(Dtos(k1.登证日期),5,2)+" "+Allt(k1.凭证号) As 凭证号,;
    ALLTRIM(k1.科目)+"-"+k2.科目名称 As 科目;
    FROM ACCOUNT k2;
    INNER Join KUAIJPZ k1 On  k1.科目 = k2.科目代码;
    ORDER  By k1.登证日期;
    INTO Cursor mypz
brow
retu



测试结果如下:
图片附件: 游客没有浏览图片的权限,请 登录注册


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




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


2012-03-17 15:10
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
以下是引用ffyy在2012-3-17 14:34:53的发言:

简单举例说明问题,比如两个表中一组数据:
 登证日期    凭证号    科目代码       account.科目名称
2012-03-16    0001       220202           BUT
2012-03-16    0001       1002            存款
2012-03-16    0001       220205          拆箱费
2012-03-16    0001       1001            现金
分组排序后,我想要的是上述顺序,这也是输入数据时的物理顺序。
但是执行查询后,结果会变成:
2012-03-16    0001       1001            现金
2012-03-16    0001       1002            存款
2012-03-16    0001       220202           BUT
2012-03-16    0001       220205          拆箱费
不仅分组、按时间排序,而且还按科目代码排序了!

试验了茵梦湖 的方法,还是不行啊
示例中怎么没有类别?

坚守VFP最后的阵地
2012-03-17 15:33
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
以下是引用ffyy在2012-3-17 12:33:16的发言:

Select  Kuaijpz.登证日期,Kuaijpz.类别+"-"+Substr(Dtos(Kuaijpz.登证日期),5,2)+Space(1)+Allt(Kuaijpz.凭证号) As 凭证号,;
    ALLTRIM(Kuaijpz.科目)+"-"+Account.科目名称 As 科目,;
    FROM XC!KUAIJPZ ;
    INNER Join XC!ACCOUNT On  Kuaijpz.科目 = Account.科目代码;
    ORDER  By 登证日期;
    INTO Cursor mypz

在表mypz中,每个日期字段会对应数行数据,我想按表Kuaijpz中登证日期排序,但不改变每个日期对应数据的物理顺序。我用上面的语句,结果是在每个日期对应的数据行中,却自动按表Account中的 科目代码 字段排序了。怎么才能让查询结果不按Account中的 科目代码 字段排序呢?
Select  Kuaijpz.登证日期,Kuaijpz.类别+"-"+Substr(Dtos(Kuaijpz.登证日期),5,2)+Space(1)+Allt(Kuaijpz.凭证号) As 凭证号,;
    ALLTRIM(Kuaijpz.科目)+"-"+Account.科目名称 As 科目,;
    FROM XC!ACCOUNT ;
    INNER Join XC!KUAIJPZ On  Kuaijpz.科目 = Account.科目代码;
    ORDER  By Kuaijpz.登证日期;
    INTO Cursor mypz

坚守VFP最后的阵地
2012-03-17 16:22
快速回复:请帮我看看这个排序问题
数据加载中...
 
   



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

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