|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
方法1:
SELECT 表.料号, Max(表.QTY) AS QTY之最大值, DLookUp("客户编号","表","料号='" & [料号] & "' and
QTY=" & DMax("QTY","表","料号='" & [料号] & "'")) AS 编号
FROM 表
GROUP BY 表.料号, DLookUp("客户编号","表","料号='" & [料号] & "' and
QTY=" & DMax("QTY","表","料号='" & [料号] & "'"));
——如果觉得过于复杂,也可以这样改一下,方法2:
SELECT 表.料号, DMax("Qty","表","料号='" & [料号] & "'") AS QTY, DLookUp("客户编号","表","料号='" & [料号] & "' and QTY=" & [QTY]) AS 客户编号
FROM 表
GROUP BY 表.料号;
方法3:
SELECT 表.QTY, 表.料号, 表.客户编号
FROM [SELECT 表.料号, Max(表.QTY) AS QTY
FROM 表
GROUP BY 表.料号 ]. AS 表1 INNER JOIN 表 ON 表1.QTY= 表.QTY;
方法4:
为了避免SQL语句可能运行出错,其实最好的做法应该是把这部分做一个查询:
SELECT 表.料号, Max(表.QTY) AS QTY
FROM 表
GROUP BY 表.料号
例如保存为查询1,再内联接到数据表里做查询:
SELECT 表.QTY, 表.料号, 表.客户编号
FROM 查询1 INNER JOIN 表 ON 查询1.QTY= 表.QTY;
顺便说一下,斑竹的做法有误(网速太慢了,附件就不下载了,只是调试了下SQL代码)。应该改为:
select 料号, 客户编号, QTY from 表 where QTY in ( select max(QTY) as QTY1 from 表 group by 料号)
尽管斑竹的代码是最简洁的,但对于Access而言,我是不太支持用In子查询来做的,因为当数据比较多的时候,运行起来特别慢。
[ 本帖最后由 roych 于 2011-4-9 01:44 编辑 ] |
|