Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请大侠帮忙写个查询:最后一次录入的资产的价格

王进  发表于:2016-03-01 01:08:46  
复制

要求的结果是最后一次录入的资产的价格:

模拟结果为

a   13

b   11点击下载此附件

c   12

e   13

 

Top
宏鹏 发表于:2016-03-01 08:33:16
[access查询]【access入门】求列最大值的示例\得出每个班的最高分\分组最大值查询\分组合计示例[Access软件网]
http://www.accessoft.com/article-show.asp?id=6610
Access DMax函数取最大值,DMin函数取最小值示例[Access软件网]
http://www.accessoft.com/article-show.asp?id=7734
根据字段2对比的条件删除字段1里面重复数据的方法(保留最大值的数据,保留最小值的数据)[Access软件网]
http://www.accessoft.com/article-show.asp?id=7424



朱先生 发表于:2016-03-01 10:23:38

SELECT TOP 1 表1.[XXXX], 表1.单价
FROM 表1
ORDER BY 表1.[XXXX] DESC;
 你的附件我无法打开,只能用这种方法回复

思路:

按某一字段(代码中的XXXX DESC )降序排列,然后取一条记录(代码中的TOP 1),即最后一次的记录



王进 发表于:2016-03-01 16:43:33


王进 发表于:2016-03-01 16:46:02
我用了以上二位的方法,都打不开, 只能再次发贴,求助,请帮忙!!!!

朱先生 发表于:2016-03-01 17:10:22

发个2003的格式,帮你看一下



王进 发表于:2016-03-01 18:19:48


朱先生 发表于:2016-03-01 23:14:54

�������ش˸���

参考

不知是不是这样,分了三步进行,最终结果不要也行,直接看表



朱先生 发表于:2016-03-02 07:26:42

又一简单代码,只能看,不能存

SELECT 产品名称, last([价格]) AS 最新价格
FROM 表1
GROUP BY 产品名称;


要存的代码如下

SELECT 表1.产品名称, Last(表1.价格) AS 最新价格 INTO 最新价格表
FROM 表1
GROUP BY 表1.产品名称;

两个代码还是第二个好



王进 发表于:2016-03-02 08:57:07

谢谢八楼和二楼的两位老师,但是这还是不是我想要的结果


我希望你们能在我上传的数据库文件中,用查询的形式做好了,再上传上来,我这样就明白了,

TBLA

资产名称
ID 资产名称
1 a
2 b
3 c
4 d
5 e
6 f

TBLB


合同
ID 单价 对应资产 录入时间
1 11 a, b 2016/2/1
3 12 a, c 2016/2/10
4 13 a, e 2016/3/1

A与B关联资产编号,


要求的结果是



表1
资产名称 单价 录入时间
a 13 2016/3/1
b 11 2016/2/1
c 12 2016/2/10
d

e 13 2016/3/1
f


请问这个查询怎么写



朱先生 发表于:2016-03-02 10:16:58

 

按要求做的,不知对不对



王进 发表于:2016-03-02 14:46:08

朱先生,您好,

首先,感谢您的热心肠,

但是您的作品真的不是我要的结果,

不好意思



西出阳关无故人 发表于:2016-03-02 18:15:09
SELECT 资产名称.ID, 资产名称.资产名称, First(a.单价) AS 最后单价, Max(a.录入时间) AS 最后录入时间
FROM 资产名称 LEFT JOIN (SELECT 合同.ID, 合同.对方单位, 合同.单价, 合同.对应资产.Value AS 资产名称, 合同.录入时间 FROM 合同)  AS a ON 资产名称.ID = a.资产名称
GROUP BY 资产名称.ID, 资产名称.资产名称;


朱先生 发表于:2016-03-02 22:30:57




煮江品茶 发表于:2016-03-03 10:14:49
1、先写一个查询名曰:合同查询
select a.*,b.ID as 资产ID,b.资产名称 from 合同 as a
inner join 资产名称 as b on left(b.对应资产,instr(b.对应资产,",")-1)=a.资产名称


2、在此基础上写最终价格查询有两种算法:
算法一(仅取资产的最终价格):
select last(a.录入时间) as 录入时间,a.资产ID,a.资产名称,last(a.单价) as 单价
from 合同查询 as a


算法二(取形成资产最终价格的合同查询记录):
select a.*
from 合同查询 as a
where a.录入时间=(select last(b.录入时间) from 合同查询 as b where b.资产ID=a.资产ID)




朱先生 发表于:2016-03-03 18:33:56

 



王进 发表于:2016-03-05 07:28:17

感谢各位大侠,实在辛苦你们在百忙之中写这么多语句,现一一回复如下:


1、回复12楼,西出阳关无故人,您的查询语句,能调试成功,但是结果错误,A的最后一次录入时间的价格是13,而你的结果是12;

2、回复13楼,朱先生,您的查询语句出现语法错误,“多值字段“对应资产”在表达式“left(对应资产,1)”中无效”;

3、回复14楼,煮江品茶,您的查询语句出现语法错误,"该表达式输入错误,或太复杂以致不能估值"

4、回复15楼,朱先生,您的查询报错为,“FROM字句语法错误”


理想是丰满的,现实是残酷的,各位还是继续努力吧!!



西出阳关无故人 发表于:2016-03-05 09:29:58

点击下载此附件

或:

SELECT 资产名称.ID, 资产名称.资产名称, Max(a.录入时间) AS 最后录入时间, IIf(IsNull([最后录入时间]),"",DLookUp("单价","合同","对应资产.value=" & [资产名称].[id] & "and 录入时间=#" & [最后录入时间] & "#")) AS 单价
FROM 资产名称 LEFT JOIN (SELECT 合同.ID, 合同.对方单位, 合同.单价, 合同.对应资产.Value AS 资产名称, 合同.录入时间 FROM 合同)  AS a ON 资产名称.ID = a.资产名称
GROUP BY 资产名称.ID, 资产名称.资产名称



朱先生 发表于:2016-03-05 10:40:35

 



朱雪玲 发表于:2016-03-05 10:42:04

点击下载此附件

建三个查询,第三个是结果:

查询4:SELECT 资产名称.资产名称, Nz([合同].[ID],'') AS 合同ID, 合同.对方单位, 合同.单价, Nz([合同].[录入时间],'  ') AS 录入时间
FROM 资产名称 LEFT JOIN 合同 ON 资产名称.ID = 合同.对应资产.Value;

查询5:SELECT 查询4.资产名称.资产名称, Max(查询4.合同.录入时间) AS 合同_录入时间之最大值
FROM 查询4
GROUP BY 查询4.资产名称.资产名称;
查询6:SELECT 查询4.资产名称.资产名称, 查询4.合同.单价
FROM 查询4, 查询5
WHERE (((查询4.资产名称.资产名称)=[查询5]![查询4].[资产名称].[资产名称]) AND ((查询4.录入时间)=[查询5]![合同_录入时间之最大值]));



王进 发表于:2016-03-05 11:19:57

感谢以“西出阳关无故人”、“朱先生”、“朱雪玲”,三位大侠,一大早就来回答问题这个困扰我很久的问题

三位辛苦

但是为了评出最佳答案,还是有几点要补充的:

首先,朱先生答案正确,比前几次回答的质量高出很多,但是唯一的不足,是你修改了我的表格结构,

其次,朱雪玲女士,用最简单的设计视图回答,让初学者易懂

最后,西出阳关无故人,不仅用最简单的方法让我找到了答案,还用非常精练的结构写出了语句,让我看到高人的“深不可测”

所以,最后本贴的最佳答案,给“西出阳关无故人”

同时感谢朱先生的热心,您也辛苦了!!每次都那么努力的回答。




总记录:20篇  页次:1/1 9 1 :