此问题涉及以下代码:
SELECT A.`FSR Name` AS [Last Name],
Min(A.`ACTUAL TEP IN`) AS [Date In],
Max(B.Site) AS Site,
Max(B.Position) AS Position,
Max(B.Comments) AS Comments
FROM Deployments A
INNER JOIN Deployments AS B ON A.ID = B.ID
WHERE A.`Actual TEP In` > Now()
GROUP BY A.`FSR Name`;
此代码的目的是查询每个人今天的第一个日期,并且仅查询该记录。例如,今天之前和之后可能有许多史密斯有日期,我只想用史密斯显示今天之后的记录。这个想法是在级联列表上显示每个人的下一个日期。对于至少那部分,此代码有效。
我遇到的问题是需要与之相关的信息。 Group By force聚合,所以当我对它们执行Min或Max时,我一直在拉错错误的站点/位置/注释字段。我现在真的不确定我应该做什么,因为看起来我有点过头了。任何帮助将不胜感激!
注意:我在Access 2013中这样做。
编辑:添加粗糙表
FSR Name Date In Site Position Comments
Bob 7/3/2014 A OP Notes
Joe 10/11/2013 B OP
Joe 8/4/2014 C OP Sea
Joe 9/1/2014 D OP Dep
Buckley 11/1/2012 A OP Transfer
Buckley 10/7/2012 B OP
Jones 6/10/2012 A OP
Jones 4/27/2013 A OP 3 Notes
Jones 6/21/2011 B OP
Jones 3/26/2012 B OP 5 Notes
Jones 6/10/2012 C OP 1 Notes
Jones 3/23/2014 C OP 2 Notes
Jones 7/5/2014 D OP dep
Calvillo 2/21/2014 A OP
Calvillo 10/3/2014 B OP COM
Calvillo 11/10/2014 A OP dep
Casey 5/2/2014 C OP
答案 0 :(得分:1)
SELECT D1.[FSR Name], first(D2.[Date In]), ...
FROM Deployments AS D1
LEFT JOIN (select * from Deployments as D3 WHERE D3.[Date In] > Now() ORDER BY D3.[Date In]) as D2
ON D1.[FSR Name] = D2.[FSR Name]
group by D1.[FSR Name];
解决方案描述:您正在加入有序列表,first()
将返回同一行中的值。 first()
聚合函数仅存在于访问中,但其他数据库引擎具有相似的功能,即使没有它也可以处理。