Как я могу обновить таблицу с подзапросом, который требует двух столбцов? - PullRequest
0 голосов
/ 20 мая 2019

В моей таблице SQL Server есть рабочие идентификаторы и различные даты для каждого рабочего.Я могу найти самую раннюю дату для каждого работника, просто отлично в моем утверждении выбора.

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

Я попытался обновить таблицу, которая использует условие Exists в подзапросе, но он не позволяет мне иметь оба столбца в подзапросе.

Я получаю следующую ошибку - «Только одно выражение можетбыть указанным в списке выбора, когда подзапрос не введен с EXISTS. "

Эта версия выдает мне сообщение об ошибке, в котором отсутствует" существует. "

UPDATE workers
SET MinDate = 'x'
where eventdate =
(SELECT workerID, MIN(eventdate)
FROM workers
group by workerID)

И эта версия также дает сбойпотому что он обновляет все строки, игнорируя существующий подзапрос.

UPDATE workers
SET MinDate = 'x'
WHERE EXISTS
    ( 
      SELECT workerID, min(eventdate), MinDate
FROM workers
GROUP BY workerID, MinDate
     )

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

workerID   eventdate      MinDate
1          2016-03-16        x
2          2013-05-31        x
2          2014-02-11        NULL
2          2014-09-09        NULL
3          2013-06-14        x

Спасибо за помощь!

...