Foxtable(狐表)用户栏目专家坐堂 → 老大 帮我看个SQL语句 取同一客户 同一产品的最后记录


  共有9508人关注过本帖树形打印复制链接

主题:老大 帮我看个SQL语句 取同一客户 同一产品的最后记录

帅哥哟,离线,有人找我吗?
RandyBoy
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:181 积分:1432 威望:0 精华:0 注册:2011/11/11 12:08:00
  发帖心情 Post By:2013/3/19 12:55:00 [只看该作者]

以前方法都不能满足老朱的预期目标:同客户同产品最后交易日期的记录,用inner join会出现重复记录

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/3/19 12:57:00 [只看该作者]

以下是引用blackzhu在2013-3-19 12:35:00的发言:
  加载时加载 但是好像有重复

应该不会有重复。你先检查下b语句是否已经造成重复了,有的话再加条件,没有的话再看看最后的限定条件是否不足~~

客户,产品,时间,再把语句修改下,我实际测试了,以下4行代码就能够保存了,不需要转换,请大家也测试下

Dim cmdText As String = ""
cmdText = "Select * From {订单} a INNER JOIN (Select 客户,产品, Max(日期) As 日期  From {订单} Group By 客户,产品) b on a.日期 = b.日期 And a.产品 = b.产品 and a.客户 = b.客户"
Tables("窗口1_Table1").Fill(cmdText,"Sale",False)
Tables("窗口1_Table1").AllowEdit = True


 

[此贴子已经被作者于2013-3-19 13:36:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
RandyBoy
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:181 积分:1432 威望:0 精华:0 注册:2011/11/11 12:08:00
  发帖心情 Post By:2013/3/19 14:30:00 [只看该作者]

以上情况,还欠缺考虑同一客户,同一个产品,同一个日期,产生多笔记录的情况,要不然你试试

 回到顶部
帅哥哟,离线,有人找我吗?
RandyBoy
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:181 积分:1432 威望:0 精华:0 注册:2011/11/11 12:08:00
  发帖心情 Post By:2013/3/19 14:32:00 [只看该作者]

以上语句运行结果正确,是因为现有数据环境中,同一客户同一产品同一日期只有一笔记录


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/3/19 16:38:00 [只看该作者]

以下是引用RandyBoy在2013-3-19 14:32:00的发言:

以上语句运行结果正确,是因为现有数据环境中,同一客户同一产品同一日期只有一笔记录

那你如何去区分每笔记录的时间先后顺序那?你能区别的话,那你继续添加条件取值。

我猜测如果只是按照你添加到记录系统的顺序的话,你只需要在添加一句max(编号) as 编号 应该就可以了把

cmdText = "Select * From {订单} a INNER JOIN (Select 客户,产品, Max(日期) As 日期 ,max(编号) as 编号) From {订单} Group By 客户,产品) b on a.日期 = b.日期 And a.产品 = b.产品 and a.客户 = b.客户 and a.编号 = b.编号"

 

以上我想应该已经可以简化成如下

cmdText = "Select * From {订单} a INNER JOIN (Select 客户,产品, Max(日期) As 日期 ,max(编号) as 编号) From {订单} Group By 客户,产品) b on  a.编号 = b.编号 group by a.客户,a.产品,a.日期"


 

[此贴子已经被作者于2013-3-19 17:02:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
小狐
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:734 积分:5645 威望:0 精华:0 注册:2008/9/6 11:22:00
  发帖心情 Post By:2013/3/19 17:43:00 [只看该作者]

select 送货日期 ,送货单号,客户名称,产品编号,产品名称,规格,数量,单价,金额,单位,是否停用 from 送货明细 s where not exists (select 1 from 送货明细 where 客户名称 =  s.客户名称 and 产品名称 =  s.产品名称 and 送货日期 > s.送货日期  )
好久没有玩狐表与SQL了,语法也忘了很多,不知道对不对,试试吧

 回到顶部
帅哥哟,离线,有人找我吗?
布莱克朱
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:623 积分:3897 威望:0 精华:0 注册:2011/8/3 22:13:00
  发帖心情 Post By:2013/3/19 19:00:00 [只看该作者]

谢谢各位 我先留着,目前测试的代码还是 谢谢各位 我先留着 我测试以后 会根据各位的提供的代码 一一进行测试  目前测试的代码还是 jspta的

 回到顶部
帅哥哟,离线,有人找我吗?
hlheng
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:38 积分:312 威望:0 精华:0 注册:2013/3/26 10:05:00
  发帖心情 Post By:2013/4/10 12:08:00 [只看该作者]

以下是引用狐狸爸爸在2013-3-19 12:08:00的发言:

我也做了一个例子,老朱你看看:

 

 

 下载信息  [文件大小:436.0 KB  下载次数:24]
图片点击可在新窗口打开查看点击浏览该文件:统计演示.table


 实际测试发现,如果日期为空,就不会显示最后记录,而是上一条记录。

想请教,如果要避免这种空值情况,同时日期没有到(如提前15天),要显示满足前面两个条件的最后记录,该怎么表达?先谢谢了。

[此贴子已经被作者于2013-4-10 16:10:53编辑过]

 回到顶部
总数 38 上一页 1 2 3 4