求一条FoxPro语句,查询出表中按某个字段分类的最大日期的记录!内详,高手入!

lcmlhs_2005 2012-08-30 11:01:19
表table1(id,acctno,date),其中有记录:
1,0001,20120102
2,0001,20120103
3,0002,20120102
4,0002,20120104
...
要求:查询出表table1中每个acctno日期最大的那条记录。查询结果如:
2,0001,20120103
4,0002,20120104
...
...全文
328 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
taohua300 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
FoxPro不支持这这种嵌套的,我早就试过了[/Quote]

不是vfp不支持
是你的vfp不支持

10楼豆老师给完美答案了
lygcw9602 2012-08-30
  • 打赏
  • 举报
回复
*--- VFP9.0(汉化版) 代码
*--- 文件版本:9.0.0.7423
Select id,acctno,BIANH,MAX(date) DATE From temp GROUP BY ACCTNO
taohua300 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
楼上的方法有一上问题,就是取的不唯一,如果我表table1中还有其它字段的话,它本来该取最大日期那一行的记录的,却会取到其它记录里的值,比如:加一个字段 bianh
id,acctno,bianh,date
1,0001,1234566,20120102
2,0001,1234777,20120103
它本来该取2,0001,1234777,20120103,结果它会取成
2,0001,……
[/Quote]
你叫加字段,我也加字段
Select a.id,a.bianh,b.acctno,b.date From temp a,(Select acctno,Max(date) as date From temp Group By acctno ) b Where a.acctno = b.acctno And a.date = b.date
taohua300 2012-08-30
  • 打赏
  • 举报
回复
create table temp (id int,acctno c(10),date c(10))
insert into temp values (1,'0001','20120102')
insert into temp values (2,'0001','20120103')
insert into temp values (3,'0002','20120102')
insert into temp values (4,'0002','20120104')

Select a.id,b.acctno,b.date From temp a,(Select acctno,Max(date) as date From temp Group By acctno ) b Where a.acctno = b.acctno And a.date = b.date
十豆三 2012-08-30
  • 打赏
  • 举报
回复
你的 vfp 版本?
你运行的上面哪段代码?
lygcw9602 2012-08-30
  • 打赏
  • 举报
回复
楼主:不是批评你,话要一次性说完,不要说一半留一半,按照你提的问题及要求达到的结果,豆老师的代码没有问题。建议下次提问题时,一定要把自己的意思表达清楚。
lcmlhs_2005 2012-08-30
  • 打赏
  • 举报
回复
楼上的方法有一上问题,就是取的不唯一,如果我表table1中还有其它字段的话,它本来该取最大日期那一行的记录的,却会取到其它记录里的值,比如:加一个字段 bianh
id,acctno,bianh,date
1,0001,1234566,20120102
2,0001,1234777,20120103
它本来该取2,0001,1234777,20120103,结果它会取成
2,0001,1234566,20120103
你可以试一下
十豆三 2012-08-30
  • 打赏
  • 举报
回复
*-- vfp9.0 以下
Select id,acctno,Max(date) As date From table1 Group By acctno

*-- vfp9.0
Sys(3099,70)
Select id,acctno,Max(date) As date From table1 Group By acctno
Sys(3099,90)


Select max(id) As id,acctno,Max(date) As date From table1 Group By acctno
十豆三 2012-08-30
  • 打赏
  • 举报
回复
Create Table table1 (Id Int,acctno c(10),bianh c(10),Date c(10))
Insert Into table1 Values (1,'0001','1111','20120102')
Insert Into table1 Values (2,'0001','2222','20120103') && 取此条
Insert Into table1 Values (3,'0002','9999','20120102')
Insert Into table1 Values (4,'0002','6666','20120104') && 取此条
Browse && 看一下原始记录

Select * From table1 A Where Not Exists (Select 1 From table1 B Where A.acctno=B.acctno And A.Date<B.Date)
*-- 或
*-- 下面这句可能需要 vfp9.0
Select a.Id,b.acctno,a.bianh,b.Date From table1 a,(Select acctno,Max(Date) As Date From table1 Group By acctno ) b Where a.acctno = b.acctno And a.Date = b.Date
lcmlhs_2005 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
楼主:不是批评你,话要一次性说完,不要说一半留一半,按照你提的问题及要求达到的结果,豆老师的代码没有问题。建议下次提问题时,一定要把自己的意思表达清楚。
[/Quote]
我接受你的批评,下次一定三思而后发帖
lcmlhs_2005 2012-08-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 2 楼 的回复:
楼上的方法有一上问题,就是取的不唯一,如果我表table1中还有其它字段的话,它本来该取最大日期那一行的记录的,却会取到其它记录里的值,比如:加一个字段 bianh
id,acctno,bianh,date
1,0001,1234566,20120102
2,0001,1234777,20120103
它本来该取2,0001,1234777,20120103,结果……
[/Quote]

FoxPro不支持这这种嵌套的,我早就试过了

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧