| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3724 人关注过本帖
标题:请教一句SQL语句。
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 10楼 yafengliang
你举例的数据,在现实中是不存在的。
为什么要求你把“日期”改为“时间日期”型呢?因为在实际使用时“客户,物料,日期”,这个3个条件相同的机会是有可能,也就是上午,中午,下午等等时间,同1个客户买同样的东西的机会是有的,但如果把“日期”改为“时间日期”,VFP的,时间日期精确到秒,也就是说,同1个客户,在同1秒的时间内,买同样的东西的机会,基本上是没有的。
统计原理:
1.利用“客户,名称,日期”3个条件分类排序(订单.dbf)
 select a1.客户,a1.名称,a1.日期,(select count(日期) as 排名 from 订单 where a1.客户=客户 and a1.名称=名称 and a1.日期<=日期) as 排名 ;
 from 订单 a1
2.根据排序,过滤排名,如,前3名

select a2.* from (select a1.客户,a1.名称,a1.日期,(select count(日期) as 排名 from 订单 where a1.客户=客户 and a1.名称=名称 and a1.日期<=日期) as 排名 ;
                  from 订单 a1
) a2 ;
where 排名<=3


[此贴子已经被作者于2018-2-10 22:52编辑过]

2018-02-10 22:47
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 11楼 mywisdom88
谢谢你。我的数据结构是这样的,一条销售单记录最多要对应12条销售明细,我是直接用grid做为数据录入,所以,有时候12条销售明细可能是同种产品。我把日期改为datetime型后,超出3条的同样查不出来。请看看数据结构:
我的数据.rar (45.33 KB)
2018-02-11 13:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
纸上谈兵那天才能解决问题

坚守VFP最后的阵地
2018-02-11 14:18
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1730
专家分:3324
注 册:2012-2-29
收藏
得分:0 
回复 12楼 yafengliang
直接发数据表,这图片看不清楚哦。
2018-02-11 14:36
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1730
专家分:3324
注 册:2012-2-29
收藏
得分:0 
回复 12楼 yafengliang
直接发数据表,这图片看不清楚哦。
2018-02-11 14:36
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 15楼 schtg
原始数据
原始数据.rar (943 Bytes)
2018-02-11 15:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
销售表 中没有客户信息


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


坚守VFP最后的阵地
2018-02-11 15:51
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 17楼 sdta
我是以单号关联的
2018-02-11 15:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
单号能代表客户吗
销售表中商品的销售信息不完整,无法进行相应的统计

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


坚守VFP最后的阵地
2018-02-11 15:56
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 19楼 sdta
我现在是分多次查询
Select 单号,客户,日期 From 销售单 Where 客户 = lcNamekh Order By 客户 Into Cursor temp1
Select a.单号,a.客户,b.货名,b.价格,a.日期 From temp1 a Left Join 销售表 b On a.单号 = b.单号 Order By 货名 Into Cursor temp2
select a2.客户,a2.货名,a2.价格 as 单价,a2.日期 as 购买日期,a2.排名 as 次序 from (select a1.客户,a1.货名,a1.价格,a1.日期,(select count(日期) as 排名 from temp2 where a1.客户=客户 and a1.货名=货名 and a1.日期<=日期) as 排名 ;
    from temp2 a1) a2 where 排名<=3 And Alltrim(a2.货名) is Not null Into Cursor temp3
这样不就能连接了吗。采用mywisdom88大侠的查询,基本能查出来,就是某销售单对应的销售表记录大于3后,排序就乱了。
*lcNamekh是我要查询的客户名。

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

2018-02-11 16:02
快速回复:请教一句SQL语句。
数据加载中...
 
   



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

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