以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  排除重复值  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=44760)

--  作者:明丰
--  发布时间:2014/1/8 12:51:00
--  排除重复值

筛选“销售明细表”所有商品最近销售价,用于导出客户价格表,下面代码不能实现,请问用哪种方法效率较高?(假如有几万行)

 

Tables("销售明细表").Sort = "送货日期 DESC"
Tables("销售明细表").RepeatFilter("货品编号", 1)


--  作者:lihe60
--  发布时间:2014/1/8 12:55:00
--  

再谈INNER JOIN

一般用户可以忽略本节内容。

我们已经知道,通过INNER JOIN语句可以查询多个表的数据,其中的表可以是另一个Select语句,利用这个功能,可以完成很多用常规编码很难解决的问题。

你可以打开CaseStudy目录下的示例文件“统计演示.table”来测试下面的Select语句。

示例一

例如我们要查询出每个产品最近一次订购的日期、数量以及客户,可以使用下面的Select语句:

Select a.产品,a.客户,a.日期,a.数量 From {订单} a INNER JOIN (Select 产品,Max(日期) As 日期 From {订单} Group By 产品) b on a.产品 = b.产品 And a.日期 = b.日期

上面的Select语句,其实有两个表,分别是a和b,a表就是订单表,红色部分的语句,给订单表指定了一个别名"a",b表就上面绿色部分的Select语句,注意这段Select语句要用括号括起来,在括号之后指定别名“b”。

示例二

再例如,我们要查询出每个产品订购数量最大的订单,Select语句如下:

Select a.产品,a.客户,a.日期,a.数量 From {订单} a INNER JOIN (Select 产品,Max(数量) As 数量 From {订单} Group By 产品) b on a.产品 = b.产品 And a.数量 = b.数量 Order By a.产品