每组SQL Max函数

时间:2011-04-04 19:46:48

标签: sql ms-access

我有一个复杂的查询,每个组可能会返回多个记录。有一个字段具有数字序号。如果在一个组中返回了多个记录,我只想要具有最高序列号的记录。

我尝试过使用SQL MAX函数,但是如果我尝试添加多个字段,则返回所有记录,而不是该组中具有最高连续字段的记录。

我正在尝试在MS Access中完成此任务。


编辑:4/5/11 试图创建一个表作为我想要做的事情的一个例子

我有下表:

tblItemTrans

的ItemID(PK)
Eventseq(PK)
ItemTypeID
用户ID

Eventseq是一个数字字段,为每个ItemID递增。 (不要问我为什么,这就是表的创建方式。)每个ItemID都可以有一个或多个Evenseq。我只需要每个ItemTypeID的最后一条记录(max(Eventseq))PER。

希望这有助于任何人。

2 个答案:

答案 0 :(得分:4)

SELECT A.*
FROM YourTable A
INNER JOIN (SELECT GroupColumn, MAX(SequentialColumn) MaxSeq
            FROM YourTable
            GROUP BY GroupColumn) B
ON A.GroupColumn = B.GroupColumn AND A.SequentialColumn = B.MaxSeq

答案 1 :(得分:2)

如果您的SequentialNumber是一个ID(整个表格中唯一),那么您可以使用

select *
from tbl
where seqnum in (
    select max(seqnum) from tbl
    group by groupcolumn)

如果不是,Lamak查询的替代方法是Access域函数DMAX

select *
from tbl
where seqnum = DMAX("seqnum", "tbl", "groupcolumn='" & groupcolumn & "'")

注意:如果groupcolumn是日期,请在上面使用#而不是单引号',如果是数字,请删除单引号。