Ms access 按if条件分组

Ms access 按if条件分组,ms-access,Ms Access,我有一个total查询,其中我按id分组,并从每个组的第一行获取date1字段,从最后一行获取date2字段。我想做的是,只有在两个日期之间没有差异的情况下才能分组 例如,假设我有这个表: id date1 date2 1 1-1-2012 5-5-2012 1 5-5-2012 27-6-2012 2 26-4-2012 23-8-2012 2 22-5-2012 5-6-2012 我想做出以下选择: id

我有一个total查询,其中我按id分组,并从每个组的第一行获取date1字段,从最后一行获取date2字段。我想做的是,只有在两个日期之间没有差异的情况下才能分组

例如,假设我有这个表:

id     date1       date2 
1      1-1-2012    5-5-2012
1      5-5-2012    27-6-2012
2      26-4-2012   23-8-2012
2      22-5-2012   5-6-2012
我想做出以下选择:

id     date1       date2 
1      1-1-2012    27-6-2012
2      26-4-2012   23-8-2012
2      22-9-2012   5-12-2012

我有一个非常大的表,所以查询必须相对高效。关于如何做到这一点,你有什么建议吗?

这不会给你答案,但它可能会帮助某人越过终点线。我只是还没喝咖啡…:o)


您可能需要将整个代码块包装成一个更大的块,并对其进行处理。似乎您只想在Status=“True”时分组,但我不知道如何进行分组。

请解释导致所需输出中id=2的第二行的逻辑。我认为第三行是我这边的错误。我不知道我可以通过选择将min()、max()、first()和last()用作at groupe中的函数。我将尝试使用它们来构建一些东西。
SELECT T1.ID, Min(T1.Date1) as Dt1A, Max(T1.Date2) as Dt2A, Max(T2.Dt1) as Dt1B, Max(T2.Dt2) as Dt2B, IIF(Max(T2.Dt1) = Max(T2.Dt2), "True", "False") as Status
FROM tblDateStuff as T1
LEFT JOIN (
    SELECT ID, Max(Date1) as Dt1, Min(Date2) as Dt2
    FROM tblDateStuff
    GROUP BY ID
    ORDER BY ID ASC) as T2
ON T1.ID = T2.ID
GROUP BY T1.ID
ORDER BY T1.ID ASC