Только клиенты, чья минимальная регистрация связана с услугой - PullRequest
0 голосов
/ 12 октября 2018

Привет всем, я хочу написать запрос, который возвращает набор данных, показывающий только клиентов, чья первая регистрация имеет тип обслуживания "Ориентация". Пример данных ниже

client clientID  enrollment date  enrollmentID           service date  serviceID        service type
  sam    01         03-04-2018      1005                    03-04-2018    3005             search
  sam    01         02-03-2018      1004                    02-03-2018    3004          orientation
  jon    02         7-05-2017       1003                    1-04-2017     3003          Search other
  jon    02         1-04-2017       1002                    1-05-2017     3002           orientation
  sam    01         1-02-2017       1001                    1-05-2017     3001            search

The desired result set is
jon    02         1-04-2017       1002                    1-05-2017     3002           orientation

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Использовать оконную функцию row-number ()

select * from 
(select client, clientID,  enrollmentdate,  enrollmentID ,servicedate,serviceID,servicetype,row_number() over(order by enrollmentdate) rownum
from tablename where servicetype='orientation')a where rownum=1

ИЛИ вы можете использовать коррелированный подзапрос

select * from tablename t1 where enrollmentdate in (select min(enrollmentdate) from tablename t2)
where servicetype='orientation'
0 голосов
/ 12 октября 2018

Мы можем использовать ROW_NUMBER здесь, чтобы указать первые записи регистрации для каждого клиента.Затем мы можем дополнительно утверждать, что тип сервиса был orientation:

SELECT client, clientID, [enrollment date], enrollmentID, [service date],
    serviceID, [service type]
FROM
(
    SELECT *, ROW_NUMBER() OVER (PARTITION BY clientID ORDER BY [enrollment date]) rn
    FROM yourTable
) t
WHERE rn = 1 AND [service type] = 'orientation';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...