Получить первую запись из набора результатов - PullRequest
1 голос
/ 14 февраля 2012

enter image description here

Я хочу выбрать только выделенные записи. Как я могу сделать это в SQL и предпочтительно в Linq. есть отдельная таблица Emp с EmployeeID как PK. вот схема для моих таблиц

enter image description here

Ответы [ 4 ]

2 голосов
/ 14 февраля 2012

Попробуйте:

select * from
(select t.*, 
        row_number() over (partition by EmployeeID order by FromDate) as rn) sq
where rn = 1
2 голосов
/ 14 февраля 2012

Я могу быть далеко, но я считаю, что следующее утверждение удовлетворяет вашим требованиям

SELECT *
FROM   (
         SELECT e.EmployeeID, h.FromDate, h.ToDate
                , rn = ROW_NUMBER() OVER (PARTITION BY e.EmployeeID ORDER BY DesignationID DESC)
         FROM   employee e
                INNER JOIN history h ON h.EmployeeID = e.EmployeeID
       ) eh
WHERE rn = 1
1 голос
/ 14 февраля 2012

Не могу точно понять, что вы просите.Выделенные идентификаторы - это просто уникальные события.Так что вы можете сделать это легко с помощью:

SELECT DISTINCT EmployeeID FROM MyTable
1 голос
/ 14 февраля 2012

Не уверен, что вы ищете, но попробуйте что-то вроде этого (никакие подзапросы не нужны и должны работать на большинстве СУБД, хотя похоже, что вы используете SQL Server):

select t1.DisignationHistoryIDs, t1.employeeId, t1.fromDate from history t1
left join history t2
on t1.employeeId = t2.employeeId and t1.fromDate > t2.fromDate
where t2.fromDate is null

Это должно работатьчтобы получить самую старую дату.Чтобы получить самую новую дату, просто измените > на <.

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