Получить наименьшую дату для каждого элемента в запросе доступа - PullRequest
0 голосов
/ 14 января 2011

Итак, у меня есть таблица, содержащая различные элементы и даты. В основном это выглядит так:

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 ]

1 голос
/ 14 января 2011

Попробуйте это

SELECT s1.actieElement, s1.begindatum
FROM tblActieElementLink AS s1
WHERE s1.begindatum =(SELECT MIN(s2.begindatum)
          FROM tblActieElementLink  s2
          WHERE s1.actieElement = s2.actieElement
          );
0 голосов
/ 14 января 2011
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;
0 голосов
/ 14 января 2011

Добавьте предложение DISTINCT к вашему SELECT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...