Office中国论坛/Access中国论坛

标题: 类似excel公式 [打印本页]

作者: shantao    时间: 2009-4-24 15:10
标题: 类似excel公式
问题:一个价格表:pic,两个字段:运距,(数据:3,5,9)价格(数据:5,7,10)。 一个主表:main ,两个字段:金额,运距,要求:如果main中的运距为5 ,则金额为3,如果运距为大于9则金额为10,类似excel的vlookup模糊查找,这样的查询做的出来吗???
作者: Henry D. Sy    时间: 2009-4-24 16:23
可以
作者: todaynew    时间: 2009-4-24 21:40
SELECT main.运距, IIf([运距]>9,10,DLookUp("价格","pic","运距>=" & [运距])) AS 单价, [运距]*[单价] AS 金额
FROM main;
作者: shantao    时间: 2009-4-25 07:51
多谢 todaynew  兄,我验证一下~~回来再问你一个问题!!!
作者: shantao    时间: 2009-4-25 08:10
todaynew 兄 DLookUp("价格","pic","运距>=" & [运距]) 中条件  "运距>=" & [运距]) 怎么解释,
作者: todaynew    时间: 2009-4-26 20:23
本帖最后由 todaynew 于 2009-4-26 20:36 编辑
todaynew 兄 DLookUp("价格","pic","运距>=" & [运距]) 中条件  "运距>=" & [运距]) 怎么解释,
shantao 发表于 2009-4-25 08:10

表pic中的运距与当前记录中的运距相等,也就是以记录中的运距字段为变量。

实际上pic中符合"运距>=" & [运距])条件的有多种情况,但由于Dlookup只列出符合条件的第一条记录,所以可以满足你的问题要求。从这一特点出发,也可以将查询写成:

SELECT main.运距, IIf([运距]>9,10,DFirst("价格","pic","运距>=" & [运距])) AS 单价, [运距]*[单价] AS 金额
FROM main;

或者:

SELECT main.运距, IIf(main.运距>9,10,(select first(b.价格) from pic as b where b.运距>=main.运距)) AS 单价, main.运距*单价 AS 金额
FROM main;

我想应该还有其他一些解法,这说明一个问题往往可能有多种解决方案。
作者: shantao    时间: 2009-4-27 15:43
谢谢 todaynew 的耐心的讲解,问题解决了,也学到了select的一引些知识!!
作者: todaynew    时间: 2009-4-27 18:02
谢谢 todaynew 的耐心的讲解,问题解决了,也学到了select的一引些知识!!
shantao 发表于 2009-4-27 15:43


不必客气,相互学习,共同提高。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3