ЗАКАЗАТЬ ПО дате, но также ГРУППА ПО ИДЕНТИФИКАТОРУ - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть таблица записей, которую я хочу отсортировать по самой ранней дате, а затем по идентификатору пользователя.

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

Желаемый вывод

Id  UserId  Date
1   2       1/1/2020
2   2       2/1/2020
3   2       3/1/2020
4   1       1/2/2020
5   1       2/2/2020
6   3       1/4/2020
7   4       1/5/2020

В этом примере UserId 2 имеет самую раннюю запись в этой таблице, поэтому за этой записью должны сначала следовать его дополнительные записи в виде c order

Ответы [ 2 ]

4 голосов
/ 14 апреля 2020

Вы, кажется, хотите:

select t.*
from table t
order by min(date) over (partition by userid), date;

Некоторые продукты баз данных не поддерживают оконную функцию с order by, поэтому вы можете сделать вместо этого:

select t.*, min(date) over (partition by userid) as mndate
from table t
order by mndate, date;
0 голосов
/ 14 апреля 2020

Если я понимаю, что вы хотите ...

Вы можете сделать это (пример с синтаксисом DB2):

SELECT tab.UserId, tab.Date, tab.*
  FROM DB2SIS.TABLE_NAME tab
 ORDER BY tab.Date ASC, tab.UserId ASC

Таким образом, UserId и Date будут появляться неоднократно. Вместо «tab. *» Используйте каждое поле, которое вы хотите показать, тогда UserId и Date не будут повторяться.

...