Мне нужно присоединиться через представление в таблицах SQLServer 2008 hstT
и hstD
.Основная таблица содержит данные о сотрудниках и их «логинах» (таким образом, несколько записей привязаны к x сотруднику за x месяц), а во второй таблице содержится информация об их области по месяцам, и мне нужно объединить обе таблицы, но вести самую раннюю записьв качестве ссылки для объединения и остальных записей, связанных с этим идентификатором.Так что hstT
это что-то вроде:
id id2 period name
----------------------
x 1 0718 john
x 1 0818 john
y 2 0718 jane
И hstD
:
id2 period area
----------------------
1 0718 sales
1 0818 hr
2 0707 mng
С OUTER JOIN
мне удается объединить все данные на основе ID2
(идентификатор пользователя) и period
НО, как я уже говорил, мне нужно присоединиться к другой таблице на основе самой ранней записи, выделив ID
(которую я мог бы использовать в качестве критерия), чтобы она выглядела так:
id id2 period name area
---------------------------
x 1 0718 john sales
x 1 0818 john sales
y 2 0718 jane mng
Я знаю, что могу использовать ROW_number
, но я не знаю, как использовать его в представлении и присоединиться к нему при следующих условиях:
SELECT T.*,D.*, ROW_NUMBER() OVER (PARTITION BY T.ID ORDER BY T.PERIOD ASC) AS ORID
FROM dbo.hstT AS T LEFT OUTER JOIN
dbo.hstD AS D ON T.period = D.period AND T.id2 = D.id2
WHERE ORID = 1
--promps error as orid doesn't exist in any table