我有一个复杂的查询,每个组可能会返回多个记录。有一个字段具有数字序号。如果在一个组中返回了多个记录,我只想要具有最高序列号的记录。
我尝试过使用SQL MAX函数,但是如果我尝试添加多个字段,则返回所有记录,而不是该组中具有最高连续字段的记录。
我正在尝试在MS Access中完成此任务。
编辑:4/5/11 试图创建一个表作为我想要做的事情的一个例子
我有下表:
tblItemTrans
的ItemID(PK)
Eventseq(PK)
ItemTypeID
用户ID
Eventseq是一个数字字段,为每个ItemID递增。 (不要问我为什么,这就是表的创建方式。)每个ItemID都可以有一个或多个Evenseq。我只需要每个ItemTypeID的最后一条记录(max(Eventseq))PER。
希望这有助于任何人。
答案 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是日期,请在上面使用#
而不是单引号'
,如果是数字,请删除单引号。