标题:如何查询结果
只看楼主
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
结帖率:66.67%
已结贴  问题点数:20 回复次数:17 
如何查询结果
表1
用户编号 c(6)  
000001
000002
000003
...

表2
用户编号c(6)  记录时间 dt(8)
000001          2001-01-01 12:00
000002          2002-05-20 17:35
000003          2005-02-01 14:21
000001          2007-03-01 12:05
000002          2009-01-05 18:35
.....

如何查询每个编号的最后一条记录并输出到新表?

[此贴子已经被作者于2023-3-26 09:09编辑过]

搜索更多相关主题的帖子: 查询 记录 结果 用户 编号 
2023-03-26 09:08
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
编号都是唯一的
2023-03-26 09:08
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:5 
CREATE CURSOR tt (bh c(10), sj c(16))
INSERT INTO tt VALUES ("000001", "2001-01-01 12:00")
INSERT INTO tt VALUES ("000002", "2002-05-20 17:35")
INSERT INTO tt VALUES ("000003", "2005-02-01 14:21")
INSERT INTO tt VALUES ("000001", "2007-03-01 12:05")
INSERT INTO tt VALUES ("000002", "2009-01-05 18:35")
SYS(3099,70)
SELECT * FROM tt GROUP BY bh INTO TABLE 新表
BROWSE

坚守VFP最后的阵地
2023-03-26 09:29
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
回复 3楼 sdta
感谢,我饶了很多圈子,您这一句话解决问题
2023-03-26 10:27
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:5 
C(16) 连接太慢,建议表2增加自增或代表顺序的 Int 字段。

程序代码:
Sys(3099,90)
Create Cursor 表1 (用户编号 C(6))
Insert Into 表1 Values ("000001")
Insert Into 表1 Values ("000002")
Insert Into 表1 Values ("000003")
Insert Into 表1 Values ("000004")

Create Cursor 表2 (用户编号 C(6), 记录时间 C(16))
Insert Into 表2 Values ("000001", "2001-01-01 12:00")
Insert Into 表2 Values ("000002", "2002-05-20 17:35")
Insert Into 表2 Values ("000003", "2005-02-01 14:21")
Insert Into 表2 Values ("000001", "2007-03-01 12:05")
Insert Into 表2 Values ("000002", "2009-01-05 18:35")

Select 用户编号, Max(记录时间) As 记录时间 From 表2 Group By 用户编号 Into Cursor t

*-- 简配版
Select a.用户编号, b.* ;
    From 表1 a ;
    Left Join t On a.用户编号 = t.用户编号 ;
    Inner Join 表2 b On t.记录时间 = b.记录时间 ;
    Order By a.用户编号
    
*-- 高配版
Select b.* From 表2 b, t Where t.记录时间 = b.记录时间 Into Cursor t1
Select a.用户编号, b.* ;
    From 表1 a ;
    Left Join t1 b On a.用户编号 = b.用户编号;
    Order By a.用户编号
    
Use In Select("t")
Use In Select("t1")
2023-03-26 10:46
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
谢谢,您这个我得研究研究。
还有一个问题,在sql 2000里这个命令是不是行不通呢?
2023-03-26 11:41
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:5 
SQL2000+
程序代码:
Declare @表1 Table (用户编号 Char(6))
Insert Into @表1 Values ('000001')
Insert Into @表1 Values ('000002')
Insert Into @表1 Values ('000003')
Insert Into @表1 Values ('000004')

Declare @表2 Table (用户编号 Char(6), 记录时间 Char(16))
Insert Into @表2 Values ('000001', '2001-01-01 12:00')
Insert Into @表2 Values ('000002', '2002-05-20 17:35')
Insert Into @表2 Values ('000003', '2005-02-01 14:21')
Insert Into @表2 Values ('000001', '2007-03-01 12:05')
Insert Into @表2 Values ('000002', '2009-01-05 18:35')


Select a.用户编号, b.*
    From @表1 a
    Left Join (
        Select b.* From @表2 b, (Select 用户编号, Max(记录时间) As 记录时间 From @表2 Group By 用户编号) t
                Where t.记录时间 = b.记录时间 
        ) b On a.用户编号 = b.用户编号
    Order By a.用户编号
2023-03-26 11:57
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
回复 7楼 倦猫1973
您这个运行没问题,谢谢!
可能我把问题想复杂了,如果我只想找到每个编号的最后一次记录时间,如何写呢?
2023-03-26 14:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
如果记录时间是顺序的就简单,GROUP分组可以是按顺序从头到尾扫描,到尾部就是最后一次记录。
如果记录时间是乱序的就要先排序再分类。
2023-03-26 14:28
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
程序代码:
create TABLE a(userid CHAR(6),pcharge numeric(9,2),createtime datetime)
INSERT INTO A VALUES('000001',10.21,'2001-01-01 12:00')
INSERT INTO A VALUES('000001',10.21,'2001-06-15 08:01')
INSERT INTO A VALUES('000002',10.21,'2011-07-17 05:00')
INSERT INTO A VALUES('000003',10.21,'2021-01-27 03:00')
INSERT INTO A VALUES('000001',10.21,'2002-03-13 02:00')
INSERT INTO A VALUES('000004',10.21,'2008-05-05 16:00')
INSERT INTO A VALUES('000005',10.21,'2009-03-04 17:00')
INSERT INTO A VALUES('000066',10.21,'2017-05-08 14:00')
INSERT INTO A VALUES('000003',10.21,'2023-09-03 13:00')
INSERT INTO A VALUES('000002',10.21,'2020-08-06 18:00')
INSERT INTO A VALUES('000001',10.21,'2001-06-15 08:02')
INSERT INTO A VALUES('000002',10.21,'2000-05-09 04:00')
INSERT INTO A VALUES('000001',10.21,'2002-03-06 17:00')

我想查询这个表的每个userid的最后一次记录,如何写呢?winXP+sql 2000
2023-03-26 14:39



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511682-1-1.html




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

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