Извлечение обоих отсчетов и самого раннего экземпляра из моего набора данных - PullRequest
0 голосов
/ 14 марта 2011

Использование Microsoft Sql 2000

У меня есть требование иметь возможность отправлять по электронной почте ежемесячный отчет с подробным описанием ряда событий.

(у меня есть подозреваемый бит электронной почты).

Среди данных, которые мне нужны для отправки по электронной почте, есть отчет о количестве определенных курсов, которые посещали люди.(пока все просто, пара внутренних объединений и Count () и Im там.)

Чтобы добавить к этому, некоторые из внутренних курсов, которые мы запускаем, имеют дату истечения срока действия, которая запрашивает курс для переподготовки.Я смог грубо получить данные, которые мне нужны, используя SQL-код для первой части и вставив набор результатов во временную таблицу, а затем перебирая каждую строку в этой таблице, получая идентификатор пользователя, запрашивая посещаемость курса пользователя,сортировка по дате, так что самая ранняя находится сверху, и просто берется запись TOP 1.

Это кажется настолько неэффективным, так что есть ли способ изменить свой текущий запрос, чтобы я мог также получитьдата самого раннего курса, который посетил пользователь?

т.е.

SELECT uName, COUNT(uId), [ not sure what would go in here] FROM UserDetails
  INNER JOIN PassDates
  ON PassDates.fkUser = uId)
GROUP BY uName, uId 

где, например,

 UserDetails
  uId
  uName

и

PassDates
   fkUser
   CourseId
   PassDate

Надеюсь, я объяснил это достаточно хорошо, чтобы кто-то помог мне.

1 Ответ

0 голосов
/ 14 марта 2011

Чтобы поставить ответ на вопрос ..

SELECT uName, COUNT(uId), MIN(PassDate)
FROM UserDetails
INNER JOIN PassDates ON PassDates.fkUser = uId
GROUP BY uName, uId

Вы можете превратить его в левое соединение, если у вас есть пользователи без каких-либо курсов (пока)

...