Группировать в DB2 - PullRequest
       19

Группировать в DB2

0 голосов
/ 13 июля 2011

У меня есть запрос, чтобы выбрать ближайшую будущую встречу с врачом для пользователей в DB2.

  SELECT user_id, 
         appointment_id, 
         date 
    FROM (SELECT user_id, 
                 appointment_id, 
                 date 
            FROM doctors_appointment 
           WHERE date > current_timestamp 
             AND user_id IN (23, 24, 25)
        ORDER BY date ASC ) as tmp_appointment 
GROUP BY user_id

Но выдается ошибка при включении идентификатора встречи и даты в выражении group by, что означает, что он просит включить все выбранныеполя в группе по.

Если я включу все поля в группе по результату будет выглядеть так:

   user_id    appointment_id      date 
   --------  ----------------     -------
    23            450             2011-07-20
    23            451             2011-07-26
    25            452             2011-07-18

Но мне нужен результат, как показано ниже:

   user_id    appointment_id      date 
   --------   --------------       -------
    23            450             2011-07-20
    25            452             2011-07-18

1 Ответ

2 голосов
/ 13 июля 2011

Я думаю, что это помогает:

  SELECT D.User_ID, D.Appointment_ID, D.Date 
    FROM Doctors_Appointment AS D
    JOIN (SELECT User_ID, MIN(Date) AS Apt_Date
            FROM Doctors_Appointment 
           WHERE Date > current_timestamp 
             AND User_ID IN (23, 24, 25)
           GROUP BY User_ID) AS T 
      ON T.User_ID = D.User_ID AND T.Apt_Date = D.Date;

Это даст две строки для данного пользователя, если у этого пользователя будет две встречи в один и тот же день.

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