| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2771 人关注过本帖
标题:请教,怎样求出记录的最大间隔?
只看楼主 加入收藏
fengmh
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2018-3-18
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:16 
请教,怎样求出记录的最大间隔?
1个表,2个字段:时间,商品名称,如下表,我想求出商品名称中每种商品的最大进货时间间隔,先谢谢了.

时间      商品名称
1月2日    铅笔
1月3日    橡皮
1月4日    小刀
1月5日    橡皮
1月7日    橡皮
1月8日    小刀
1月9日    铅笔
1月10日   小刀
1月11日   铅笔
1月12日   橡皮
按照上例,铅笔的最大时间间隔是7天,橡皮的最大时间间隔是5天。
搜索更多相关主题的帖子: 记录 最大 间隔 商品 名称 
2018-11-08 15:56
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:0 
楼主这是看图写代码啊

坚守VFP最后的阵地
2018-11-08 18:15
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:0 
思路:
按商品名称分组,最大日期-最小日期

坚守VFP最后的阵地
2018-11-08 18:16
xs591222
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:682
专家分:1299
注 册:2009-3-1
收藏
得分:0 
以下是引用sdta在2018-11-8 18:16:58的发言:

思路:
按商品名称分组,最大日期-最小日期

铅笔,2号,9号,11号,最大间隔为7天,若最大减最小11-2=9天了,不符楼主的要求了
2018-11-08 18:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:0 
按商品名称排序,相同商品名称的日期相减,然后取得最大间隔日期

坚守VFP最后的阵地
2018-11-08 20:10
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
*!* 建立测试数据
SET DATE YMD
SET CENTURY ON
create cursor 进货(时间 d,名称 c(20))
insert into 进货(时间,名称) values({^2018-1-2},"铅笔")
insert into 进货(时间,名称) values({^2018-1-3},"橡皮")
insert into 进货(时间,名称) values({^2018-1-4},"小刀")
insert into 进货(时间,名称) values({^2018-1-5},"橡皮")
insert into 进货(时间,名称) values({^2018-1-7},"橡皮")
insert into 进货(时间,名称) values({^2018-1-8},"小刀")
insert into 进货(时间,名称) values({^2018-1-9},"铅笔")
insert into 进货(时间,名称) values({^2018-1-10},"小刀")
insert into 进货(时间,名称) values({^2018-1-11},"铅笔")
insert into 进货(时间,名称) values({^2018-1-12},"橡皮")
*!* 查询
SELECT 名称,MAX(间隔) as 间隔 FROM (SELECT t1.*,NVL(t1.时间-(SELECT MAX(时间) FROM 进货 WHERE 名称=t1.名称 AND 时间 < t1.时间),0) as 间隔 FROM 进货 as t1) t2 ;
GROUP BY 名称 INTO CURSOR tmp进货
BROWSE
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2018-11-8 20:43编辑过]

2018-11-08 20:41
fengmh
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2018-3-18
收藏
得分:0 
回复 6楼 mywisdom88
老师,查询语句为什么显示语法错误?
2018-11-09 09:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
也可以先按 商品名称+时间 排序再扫描一次就可以分别获取相同名称的时间间隔最大值。
2018-11-09 10:45
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:10 
SQL语句有点高深,俺采用的是笨办法:

select * from 进货 into cursor temp order by 名称,时间
sele temp
go top
do while !eof()
    cName = 名称
    dDate = 时间
    nDay = 0
    scan rest while 名称 =
        if 时间 - dDate > dDay
            nDay = 时间 - dDate
        endif
        dDate = 时间
    endscan
    ? cName,dDay
enddo

泉城飞狐
2018-11-10 11:01
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用fengmh在2018-11-9 09:05:49的发言:

老师,查询语句为什么显示语法错误?

VFP9测试正常,同时,注意分行 ;
SELECT 名称,MAX(间隔) as 间隔 FROM ;
 (SELECT t1.*,NVL(t1.时间-(SELECT MAX(时间) FROM 进货 WHERE 名称=t1.名称 AND 时间 < t1.时间),0) as 间隔 FROM 进货 as t1) t2 ;
 GROUP BY 名称 INTO CURSOR tmp进货
brow

[此贴子已经被作者于2018-11-11 11:56编辑过]

2018-11-11 11:53
快速回复:请教,怎样求出记录的最大间隔?
数据加载中...
 
   



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

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