获取访问查询中每个元素的最小日期

时间:2011-01-14 14:38:42

标签: sql ms-access many-to-many

所以我有一个包含不同元素和日期的表。 它基本上是这样的:

actieElement    beginDatum
1               1/01/2010
1               1/01/2010
1               10/01/2010
2               1/02/2010
2               3/02/2010

我现在需要的是每个actieElement的最小日期。 我找到了一个使用简单的GROUP BY语句的解决方案,但这样查询就会失去其范围,你不能再改变任何东西。

如果没有GROUP BY语句,我会为每个actieElement获取多个日期,因为某些日期是相同的。

我想到了类似的东西,但它也不起作用,因为它会使子查询超过1条记录:

SELECT s1.actieElement, s1.begindatum
FROM tblActieElementLink AS s1
WHERE (((s1.actieElement)=(SELECT TOP 1 (s2.actieElement)
          FROM tblActieElementLink  s2
          WHERE s1.actieElement = s2.actieElement
          ORDER BY s2.begindatum ASC)));

3 个答案:

答案 0 :(得分:1)

试试这个

SELECT s1.actieElement, s1.begindatum
FROM tblActieElementLink AS s1
WHERE s1.begindatum =(SELECT MIN(s2.begindatum)
          FROM tblActieElementLink  s2
          WHERE s1.actieElement = s2.actieElement
          );

答案 1 :(得分:0)

SELECT DISTINCT T1.actieElement, T1.beginDatum
  FROM tblActieElementLink AS T1
       INNER JOIN (
                   SELECT T2.actieElement, 
                          MIN(T2.beginDatum) AS smallest_beginDatum
                     FROM tblActieElementLink AS T2
                    GROUP
                       BY T2.actieElement
                  ) AS DT1
          ON T1.actieElement = DT1.actieElement
             AND T1.beginDatum = DT1.smallest_beginDatum;

答案 2 :(得分:-1)

向SELECT中添加DISTINCT子句。