回 帖 发 新 帖 刷新版面

主题:如何显示一个表中特定一个字段中各个值的前n个记录,请高手帮忙,谢谢!

想请教一下如何取字段"off_home"中各值的前100条记录,如下表 
姓名 off_home 销售商品 销售时间 
王一 601 洗衣机 11月12日 
王二 602 电视 11月13日 
张三 603 冰箱 11月9日 
李四 604 微波炉 11月8日 
王三 601 微波炉 11月7日 
王四 602 冰箱 11月5日 
张一 603 微波炉 11月3日 
李三 604 冰箱 11月7日 
王五 601 微波炉 11月2日 
王六 602 冰箱 11月8日 
张二 603 电视 11月9日 
李二 604 电视 11月6日 

要输什么命令后能让系统自动取601的前2个,602的前2个,603的前2个等记录.结果如下表: 
王一 601 洗衣机 11月12日 
王三 601 微波炉 11月7日 
王二 602 电视 11月13日 
王四 602 冰箱 11月5日 
张三 603 冰箱 11月9日 
张一 603 微波炉 11月3日 
李四 604 微波炉 11月8日 
李三 604 冰箱 11月7日 

我试着用以下这个都不能用,只能取off_home中各字段的第一个记录,就是不能取前N个记录,我用的命令是 
sele  top 100 * from 文件名 group by off_home order by 姓名 
请楼主帮我看下要怎么写才会得出我要的结果,万分感谢~~~

补充一下,我现在只能在off_home中挨个找各个值的前n个记录,命令如下: 
sele top (n) * from 文件名 where off_home="601" order by 姓名 
如果这个off_home的值有很多个,那就很麻烦了,我要一个一个的提取,有没有啥简便的方法?

回复列表 (共4个回复)

沙发

回复了后面的一个问题如下:原理应该一样的吧,
*只用SQL命令没办法,只能用循环了
clea all

SELECT * INTO tabl CURS_B  FROM F:\Downloads\1000 WHERE 销售员 IN(;
select 销售员 from F:\Downloads\1000 ;
group by 销售员 HAVING COUNT(*)<=5)

select  销售员 INTO CURS CURS_A from F:\Downloads\1000  group by 销售员 HAVING COUNT(*)>5
SELECT CURS_A
DO WHILE NOT EOF()
  INSERT INTO curs_b select TOP 5 * from F:\Downloads\1000 WHERE 销售员=CURS_A.销售员 ORDER BY 销售员
  SELECT CURS_A
  SKIP
ENDDO
*用SQL语句显示"销售员"字段中每个销售员的前5个销售记录并放至新表中,输出结果大致如下:

select curs_b 
brow last

retu

板凳

我想请问下,你的语句是不是这个意思,还请赐教:
1\SELECT * INTO tabl CURS_B  FROM F:\Downloads\1000 WHERE 销售员 IN(;
select 销售员 from F:\Downloads\1000 ;
group by 销售员 HAVING COUNT(*)<=5)
这是取值文件中同一销售员记录数少于5的所有记录并放至新表curs_b文件中,这段话我复制到命令窗口后查找到的记录数有281条

2\select  销售员 INTO CURS CURS_A from F:\Downloads\1000  group by 销售员 HAVING COUNT(*)>5
SELECT CURS_A
DO WHILE NOT EOF()
  INSERT INTO curs_b select TOP 5 * from F:\Downloads\1000 WHERE 销售员=CURS_A.销售员 ORDER BY 销售员
  SELECT CURS_A
  SKIP
ENDDO
这是查找文件中同一销售员记录数大于5的所有记录,并取前5个记录,我就是在输入此段命令后系统提示"交互条件下不能使用此语句"??

3 楼

你建立程序PROG1
MODI COMM PROG1
将上面的命令全部拷贝,,[size=5][b]修改表的确切位置[/b][/size]我的是F:\Downloads\1000后,保存
执行 程序PROG1
DO PROG1

注意(DO WHILE NOT EOF().....ENDDO)是在程序中用的,

4 楼

use 表名
copy stru to 目的表
select distinct off_home from 表名 into cursor offhome
scan
  offhome = off_home
  insert into 目的表 select top 2 * from 表名 where off_home = offhome order by 姓名
ends
select * from 目的表

我来回复

您尚未登录,请登录后再回复。点此登录或注册