В SQL Server рассмотрим эту таблицу:
| Идентификатор | Номер части | Отметка времени | Реинтеграция |
|---|---|---|---|
| 1 | 1111 | 2020-01-01 | НУЛЕВОЙ |
| 2 | 1111 | 2020-01-02 | НУЛЕВОЙ |
| 3 | 2222 | 2021-02-01 | НУЛЕВОЙ |
| 4 | 2222 | 2021-02-02 | НУЛЕВОЙ |
Я хочу обновить столбец Reintegration значением MAXGroup By PartNumber.
Вот ожидаемый результат:
| Идентификатор | Номер части | Отметка времени | Реинтеграция |
|---|---|---|---|
| 1 | 1111 | 2020-01-01 | НУЛЕВОЙ |
| 2 | 1111 | 2020-01-02 | 2020-01-02 |
| 3 | 2222 | 2021-02-01 | НУЛЕВОЙ |
| 4 | 2222 | 2021-02-02 | 2021-02-02 |
Я пробовал многое с GROUP BY, MAX, INNER JOIN, но безуспешно.
Спасибо за любую помощь.


Здесь хорошо подходит оконная функция max() over().
Пример или дбфиддл
with cte as (
Select *
,MaxDate = max([TimeStamp]) over (partition by PartNumber)
from YourTable
)
Update cte set [Reintegration] = MaxDate
Where [TimeStamp] = MaxDate
Обновленная таблица
Id PartNumber Timestamp Reintegration
1 1111 2020-01-01 NULL
2 1111 2020-01-02 2020-01-02
3 2222 2021-02-01 NULL
4 2222 2021-02-02 2021-02-02