Это сложный вопрос, но я борюсь с SQL, поскольку я все еще учусь.Обратите внимание, у меня есть обширная БД (это связано с работой).Я использую Microsoft Management Studio 2017
Таблица SomeStatus
имеет 5 столбцов:
id, someFk, type, status, createdDttm
, где someFk
имеет повторяющиеся записи (каждый раз, когда изменяется статус).
Сначала я подумал, что могу продолжить, основываясь на значении самой последней строки для каждого someFk
, поэтому я сделал объединение группа + (что я получил из другого ответа: P)
update SomeStatus
set status = 'F', type = 'Withdrawn'
from
(select someFk, max(createdDttm) AS createdDttm
from SomeStatus
group by someFk) as last
inner join SomeStatus ss on ss.someFk = last.mpanFk
and ss.createdDttm = last.createdDttm
~followed by several joins~
where
acc.cancel = 'Y'
and (ss.status = 'A' or ss.status = 'B' or ss.status = 'C')
НоЯ не могу все это обновить.Мне нужно делать разные вещи, основываясь на второй строке каждой группы someFk (поэтому я предполагаю, что для каждого поведения требуется два разных запроса).
Удалить самую последнюю строку, если статус первой строки = 'A / B / C'и статус второй строки =' F 'обновить / вставить, если статус первой строки и второй строки =' A / B / C '
Извините, если я не очень хорошо объясняю.Я думаю, что мне нужно сделать еще одно групповое объединение с упорядочением по / смещению, но не могу использовать это с группированием по?Не уверен: /